Revision daba67c7 lib/workerpool.py

b/lib/workerpool.py
49 49
    """
50 50
    super(BaseWorker, self).__init__(name=worker_id)
51 51
    self.pool = pool
52
    self._worker_id = worker_id
52 53
    self._current_task = None
53 54

  
55
    assert self.getName() == worker_id
56

  
54 57
  def ShouldTerminate(self):
55 58
    """Returns whether this worker should terminate.
56 59

  
......
64 67
    finally:
65 68
      self.pool._lock.release()
66 69

  
70
  def SetTaskName(self, taskname):
71
    """Sets the name of the current task.
72

  
73
    Should only be called from within L{RunTask}.
74

  
75
    @type taskname: string
76
    @param taskname: Task's name
77

  
78
    """
79
    if taskname:
80
      name = "%s/%s" % (self._worker_id, taskname)
81
    else:
82
      name = self._worker_id
83

  
84
    # Set thread name
85
    self.setName(name)
86

  
67 87
  def _HasRunningTaskUnlocked(self):
68 88
    """Returns whether this worker is currently running a task.
69 89

  
......
107 127
        # Run the actual task
108 128
        try:
109 129
          logging.debug("Starting task %r", self._current_task)
110
          self.RunTask(*self._current_task)
130
          assert self.getName() == self._worker_id
131
          try:
132
            self.RunTask(*self._current_task)
133
          finally:
134
            self.SetTaskName(None)
111 135
          logging.debug("Done with task %r", self._current_task)
112 136
        except: # pylint: disable-msg=W0702
113 137
          logging.exception("Caught unhandled exception")

Also available in: Unified diff