From 3291a6b516941a8b5480d4427baf1dfd8e894e35 Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas@kluyver.me.uk>
Date: Fri, 26 Feb 2021 17:25:22 +0000
Subject: [PATCH] Call metadata server after replying to ZMQ message

---
 webservice/webservice.py | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/webservice/webservice.py b/webservice/webservice.py
index 4b31218f4..6477aead8 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -774,11 +774,17 @@ class ActionsServer:
         except Exception as e:
             msg = Errors.JOB_LAUNCH_FAILED.format('correct', e)
             logging.error(msg, exc_info=e)
-            await update_mdc_status(self.mdc, 'correct', rid, msg)
+            asyncio.ensure_future(
+                update_mdc_status(self.mdc, 'correct', rid, msg)
+            )
             return msg.encode()
 
+        queued_msg = Success.QUEUED.format(proposal, [runnr])
+        logging.debug(queued_msg)
+
         async def _continue():
             """Runs in the background after we reply to the 'correct' request"""
+            await update_mdc_status(self.mdc, 'correct', rid, queued_msg)
             try:
                 transfer_complete = await wait_transfers(
                     [runnr], in_folder, proposal
@@ -840,12 +846,7 @@ class ActionsServer:
 
         asyncio.ensure_future(_continue())
 
-        msg = Success.QUEUED.format(proposal, [runnr])
-        logging.debug(msg)
-        await update_mdc_status(self.mdc, 'correct', rid, msg)
-        return msg.encode()
-
-
+        return queued_msg.encode()
 
     async def handle_dark(
             self, rid, _sase, instrument, cycle, proposal, karabo_ids,
@@ -1011,11 +1012,18 @@ class ActionsServer:
         except Exception as e:
             msg = Errors.JOB_LAUNCH_FAILED.format('dark_request', e)
             logging.error(msg, exc_info=e)
-            await update_mdc_status(self.mdc, 'dark_request', rid, msg)
+            asyncio.ensure_future(
+                update_mdc_status(self.mdc, 'dark_request', rid, msg)
+            )
             return msg.encode()
 
+        queued_msg = Success.QUEUED.format(proposal, wait_runs)
+        logging.debug(queued_msg)
+
         async def _continue():
             """Runs in the background after we reply to the 'dark_request' request"""
+            await update_mdc_status(self.mdc, 'dark_request', rid, queued_msg)
+
             transfer_complete = await wait_transfers(
                 wait_runs, in_folder, proposal
             )
@@ -1071,10 +1079,7 @@ class ActionsServer:
 
         asyncio.ensure_future(_continue())
 
-        msg = Success.QUEUED.format(proposal, wait_runs)
-        logging.debug(msg)
-        await update_mdc_status(self.mdc, 'dark_request', rid, msg)
-        return msg.encode()
+        return queued_msg.encode()
 
     def handle_query_rid(self, rid):
         return query_rid(self.job_db, rid)
-- 
GitLab