code: def Start(self):
      
      try:
  
        self.stats = {}
  
        self.BeginProcessing()
  
        processed_count = 0
  
        if data_store.RelationalDBEnabled():
          for client_info_batch in _IterateAllClients(
              recency_window=self.recency_window):
            for client_info in client_info_batch:
              self.ProcessClientFullInfo(client_info)
            processed_count += len(client_info_batch)
            self.Log("Processed %d clients.", processed_count)
            self.HeartBeat()
        else:
          root_children = aff4.FACTORY.Open(
              aff4.ROOT_URN, token=self.token).OpenChildren(mode="r")
          for batch in collection.Batch(root_children, CLIENT_READ_BATCH_SIZE):
            for child in batch:
              if not isinstance(child, aff4_grr.VFSGRRClient):
                continue
  
              last_ping = child.Get(child.Schema.PING)
  
              self.ProcessLegacyClient(last_ping, child)
              processed_count += 1
              # This flow is not dead: we don't want to run out of lease time.
              self.HeartBeat()
  
        self.FinishProcessing()
        for fd in itervalues(self.stats):
          fd.Close()
  
        logging.info("%s: processed %d clients.", self.__class__.__name__,
                     processed_count)
      except Exception as e:  # pylint: disable=broad-except
        logging.exception("Error while calculating stats: %s", e)
        raise
docs: Retrieve all the clients for the AbstractClientStatsCollectors.