From 120a66e7c7a934b0ed6c06a17a3384e40e8e264e Mon Sep 17 00:00:00 2001
From: chausman <chausman@nrao.edu>
Date: Mon, 20 May 2024 10:53:17 -0600
Subject: [PATCH] fix messaging and state setting for restarted and iteration
 limited workflows

---
 .../workflow/services/workflow_service.py     | 22 ++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/shared/workspaces/workspaces/workflow/services/workflow_service.py b/shared/workspaces/workspaces/workflow/services/workflow_service.py
index c2658874d..a972390c8 100644
--- a/shared/workspaces/workspaces/workflow/services/workflow_service.py
+++ b/shared/workspaces/workspaces/workflow/services/workflow_service.py
@@ -991,7 +991,7 @@ class WorkflowMessageHandler:
             request.htcondor_iterations = request.htcondor_iterations + 1
 
             if request.htcondor_iterations > self.ITERATION_LIMIT:
-                status = WorkflowRequestState.Error
+                status = WorkflowRequestState.Error.name
                 user_message = (
                     f"Found possible infinite rescheduling loop in "
                     f"request #{request.workflow_request_id}, HTCondor iteration "
@@ -1000,6 +1000,7 @@ class WorkflowMessageHandler:
                 logger.error(user_message)
                 url = self.url + f"/workflows/requests/{request.workflow_request_id}/abort"
                 requests.post(url)
+                self._post_workflow_cleanup(message, request, "failed")
             else:
                 status = WorkflowRequestState.Running.name
                 user_message = (
@@ -1009,15 +1010,16 @@ class WorkflowMessageHandler:
                 )
                 logger.warning(user_message)
 
-            # update UI
-            iterations_msg = WorkflowMessageArchitect(
-                request=request,
-                json_payload={
-                    "htcondor_iterations": request.htcondor_iterations,
-                    "user_warning_message": user_message,
-                },
-            ).compose_message("update_wf_metadata")
-            self.messenger.send_message(**iterations_msg)
+            if request.controller == "WS":
+                # update UI, but don't try sending for externally initiated workflows
+                iterations_msg = WorkflowMessageArchitect(
+                    request=request,
+                    json_payload={
+                        "htcondor_iterations": request.htcondor_iterations,
+                        "user_warning_message": user_message,
+                    },
+                ).compose_message("update_wf_metadata")
+                self.messenger.send_message(**iterations_msg)
 
         elif message["type"] == "workflow-complete":
             request = self.info.refresh_request(request)
-- 
GitLab