This is the "commit". It triggers the creation/update of handles.
        
        * Check if the set of files corresponds to the previously published set (if applicable, and if solr url given, and if solr replied)
        * The dataset publication message is created and sent to the queue.
        * All file publication messages are sent to the queue.

def dataset_publication_finished(self, ignore_exception=False):
        '''
        This is the "commit". It triggers the creation/update of handles.
        
        * Check if the set of files corresponds to the previously published set (if applicable, and if solr url given, and if solr replied)
        * The dataset publication message is created and sent to the queue.
        * All file publication messages are sent to the queue.

        '''
        self.__check_if_dataset_publication_allowed_right_now()
        self.__check_data_consistency(ignore_exception)
        self.__coupler.start_rabbit_business() # Synchronous: Opens connection. Asynchronous: Ignored.
        self.__create_and_send_dataset_publication_message_to_queue()
        self.__send_existing_file_messages_to_queue()
        self.__coupler.done_with_rabbit_business() # Synchronous: Closes connection. Asynchronous: Ignored.
        self.__set_machine_state_to_finished()
        loginfo(LOGGER, 'Requesting to publish PID for dataset "%s" (version %s) and its files at "%s" (handle %s).', self.__drs_id, self.__version_number, self.__data_node, self.__dataset_handle)