Merge pull request #5586 from chrismeyersfsu/fix-job_start_websocket_race

emit job status over socket after database commit
This commit is contained in:
Chris Meyers
2017-02-28 13:25:44 -05:00
committed by GitHub
2 changed files with 5 additions and 2 deletions

View File

@@ -880,7 +880,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
workflow_node_id=self.workflow_node_id)) workflow_node_id=self.workflow_node_id))
return websocket_data return websocket_data
def websocket_emit_status(self, status): def _websocket_emit_status(self, status):
status_data = dict(unified_job_id=self.id, status=status) status_data = dict(unified_job_id=self.id, status=status)
status_data.update(self.websocket_emit_data()) status_data.update(self.websocket_emit_data())
status_data['group_name'] = 'jobs' status_data['group_name'] = 'jobs'
@@ -890,6 +890,9 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
status_data['group_name'] = "workflow_events" status_data['group_name'] = "workflow_events"
emit_channel_notification('workflow_events-' + str(self.workflow_job_id), status_data) emit_channel_notification('workflow_events-' + str(self.workflow_job_id), status_data)
def websocket_emit_status(self, status):
connection.on_commit(lambda: self._websocket_emit_status(status))
def notification_data(self): def notification_data(self):
return dict(id=self.id, return dict(id=self.id,
name=self.name, name=self.name,

View File

@@ -382,7 +382,7 @@ class TaskManager():
)) ))
task_obj.save() task_obj.save()
_send_notification_templates(task_obj, 'failed') _send_notification_templates(task_obj, 'failed')
connection.on_commit(lambda: task_obj.websocket_emit_status('failed')) task_obj.websocket_emit_status('failed')
logger.error("Task %s appears orphaned... marking as failed" % task) logger.error("Task %s appears orphaned... marking as failed" % task)