From ec882ff0abe1570c42d0bb8de3bfadbda58e3583 Mon Sep 17 00:00:00 2001 From: Amogh-Bharadwaj Date: Tue, 19 Sep 2023 22:03:53 +0530 Subject: [PATCH] fixes locking of catalog in qrep handler --- nexus/server/src/main.rs | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/nexus/server/src/main.rs b/nexus/server/src/main.rs index 7089f93ee2..4b6acec350 100644 --- a/nexus/server/src/main.rs +++ b/nexus/server/src/main.rs @@ -316,22 +316,27 @@ impl NexusBackend { err_msg: "flow service is not configured".to_owned(), }))); } - - let catalog = self.catalog.lock().await; - let mirror_details = - Self::check_for_mirror(&catalog, qrep_flow_job.name.clone()).await?; + let mirror_details; + { + let catalog = self.catalog.lock().await; + mirror_details = + Self::check_for_mirror(&catalog, qrep_flow_job.name.clone()).await?; + } if mirror_details.is_none() { - catalog - .create_qrep_flow_job_entry(&qrep_flow_job) - .await - .map_err(|err| { - PgWireError::ApiError(Box::new(PgError::Internal { - err_msg: format!( - "unable to create mirror job entry: {:?}", - err - ), - })) - })?; + { + let catalog = self.catalog.lock().await; + catalog + .create_qrep_flow_job_entry(&qrep_flow_job) + .await + .map_err(|err| { + PgWireError::ApiError(Box::new(PgError::Internal { + err_msg: format!( + "unable to create mirror job entry: {:?}", + err + ), + })) + })?; + } if qrep_flow_job.disabled { let create_mirror_success =