:return: List of handles, or empty list. Should never return None.
        :raise: SolrSwitchedOff
        :raise SolrError: If both strategies to find file handles failed.

def retrieve_file_handles_of_same_dataset(self, **args):
        '''
        :return: List of handles, or empty list. Should never return None.
        :raise: SolrSwitchedOff
        :raise SolrError: If both strategies to find file handles failed.
        '''
        mandatory_args = ['drs_id', 'version_number', 'data_node', 'prefix']
        esgfpid.utils.check_presence_of_mandatory_args(args, mandatory_args)
        self.__reset_error_messages()

        # Try plan A
        file_handles = None
        try:
            file_handles = self.__strategy1(args) # can raise SolrError or SolrSwitchedOff, but can't return None
        except esgfpid.exceptions.SolrError as e:
            self.__error_messages.append('Error during first query: '+e.message)

        if file_handles is not None and len(file_handles)>0:
            LOGGER.debug('Retrieved file handles from solr in first query.')
            return file_handles

        # Try plan B
        try:
            file_handles = self.__strategy2(args) # can raise SolrError or SolrSwitchedOff, but can't return None
        except esgfpid.exceptions.SolrError as e:
            self.__error_messages.append('Error during second query: '+e.message)
            msg = '/n'.join(self.__error_messages)
            raise esgfpid.exceptions.SolrError('Failure in both queries. Messages:\n'+msg)

        return file_handles