code: def HandleMessage(self, message):
      
      self._is_active = True
      try:
        action_cls = actions.ActionPlugin.classes.get(message.name)
        if action_cls is None:
          raise RuntimeError("Client action %r not known" % message.name)
  
        action = action_cls(grr_worker=self)
  
        # Write the message to the transaction log.
        self.transaction_log.Write(message)
  
        # Heartbeat so we have the full period to work on this message.
        action.Progress()
        action.Execute(message)
  
        # If we get here without exception, we can remove the transaction.
        self.transaction_log.Clear()
      finally:
        self._is_active = False
        # We want to send ClientStats when client action is complete.
        self.stats_collector.RequestSend()
docs: Entry point for processing jobs.
  
      Args:
          message: The GrrMessage that was delivered from the server.
  
      Raises:
          RuntimeError: The client action requested was not found.