':type config: object
:param config: An object, most likely populated from
`galaxy/config.ini`, having the same attributes needed by
:class:`NestedObjectStore` plus:
* distributed_object_store_config_file
:type config_xml: ElementTree
:type fsmon: bool
:param fsmon: If True, monitor the file system for free space,
removing backends when they get too full.'

def __init__(self, config, config_xml=None, fsmon=False):

    super(DistributedObjectStore, self).__init__(config, config_xml=config_xml)
    if (config_xml is None):
        self.distributed_config = config.distributed_object_store_config_file
        assert (self.distributed_config is not None), "distributed    object    store    ('object_store    =    distributed')    requires    a    config    file,    please    set    one    in    'distributed_object_store_config_file')"
    self.backends = {}
    self.weighted_backend_ids = []
    self.original_weighted_backend_ids = []
    self.max_percent_full = {}
    self.global_max_percent_full = 0.0
    random.seed()
    self.__parse_distributed_config(config, config_xml)
    self.sleeper = None
    if (fsmon and (self.global_max_percent_full or [_ for _ in self.max_percent_full.values() if (_ != 0.0)])):
        self.sleeper = Sleeper()
        self.filesystem_monitor_thread = threading.Thread(target=self.__filesystem_monitor)
        self.filesystem_monitor_thread.setDaemon(True)
        self.filesystem_monitor_thread.start()
        log.info('Filesystem    space    monitor    started')
