def Flush(self):
    session_ids = set(self.to_write) | set(self.to_delete)

    # We need to make sure that notifications are written after the requests so
    # we flush after writing all requests and only notify afterwards.
    mutation_pool = self.data_store.GetMutationPool(token=self.token)
    with mutation_pool:
      for session_id in session_ids:
        mutation_pool.MultiSet(session_id, self.to_write.get(session_id, {}),
                               to_delete=self.to_delete.get(session_id, []))

      for client_id, messages in self.client_messages_to_delete.iteritems():
        self.Delete(client_id.Queue(), messages, mutation_pool=mutation_pool)

      if self.new_client_messages:
        for timestamp, messages in utils.GroupBy(
            self.new_client_messages, lambda x: x[1]).iteritems():

          self.Schedule([x[0] for x in messages], timestamp=timestamp,
                        mutation_pool=mutation_pool)

    if self.notifications:
      for notification, timestamp in self.notifications.itervalues():
        self.NotifyQueue(notification, timestamp=timestamp,
                         mutation_pool=mutation_pool)

      mutation_pool.Flush()

    self.to_write = {}
    self.to_delete = {}
    self.client_messages_to_delete = {}
    self.notifications = {}
    self.new_client_messages = []
Parse out the actor (author or committer) info from a line like::
dataset/ETHPy150Open google/grr/grr/lib/queue_manager.py/QueueManager.Flush--crossover with--dataset/ETHPy150Open gitpython-developers/GitPython/git/objects/util.py/parse_actor_and_date