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
commit 9db49d9819
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))
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.update(self.websocket_emit_data())
status_data['group_name'] = 'jobs'
@ -890,6 +890,9 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
status_data['group_name'] = "workflow_events"
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):
return dict(id=self.id,
name=self.name,

View File

@ -382,7 +382,7 @@ class TaskManager():
))
task_obj.save()
_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)