def broadcast_event(self):
         for event_listener in self.event_listeners:
             try:
+                self.logger.debug("Notifying event listener %s",
+                                  event_listener)
                 event_listener(self)
             except Exception, e:
                 self.logger.exception("While notifying listener %s", e)
     def execute_workloads(self):
         self._terminated = False
         self.logger.info("Starting job %s" % (self.job_db.job_id))
+        self.event_listeners.clear()
         data_handler = DataHandler()
         self.register(data_handler.data_event)
 
         self.end_time = time.time()
         self._terminated = True
         self.broadcast_event()
+        self.unregister(data_handler.data_event)
 
     def execute_on_node(self, workload):
 
         self.job_db.start_workload(workload)
         workload.execute()
         self.job_db.end_workload(workload)
+        invoker.unregister(self.event)
 
         self.logger.info("Ended " + workload.fullname)