From 0c317d46a1bd5cc80b51b1ec3ebffd8c94cd0c98 Mon Sep 17 00:00:00 2001 From: Shubham Mishra Date: Wed, 5 Aug 2026 12:23:53 +0530 Subject: [PATCH] scope subscription lock in remove_single_subscribe --- .../subscription/module_subscription_actor.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/crates/core/src/subscription/module_subscription_actor.rs b/crates/core/src/subscription/module_subscription_actor.rs index 669cee5d8be..26cedd144db 100644 --- a/crates/core/src/subscription/module_subscription_actor.rs +++ b/crates/core/src/subscription/module_subscription_actor.rs @@ -609,14 +609,16 @@ impl ModuleSubscriptions { ) }; - let mut subscriptions = self.subscriptions.write(); + let queries = { + let mut subscriptions = self.subscriptions.write(); + return_on_err!( + subscriptions.remove_subscription((sender.id.identity, sender.id.connection_id), request.query_id), + // Apparently we ignore errors sending messages. + send_err_msg, + None + ) + }; - let queries = return_on_err!( - subscriptions.remove_subscription((sender.id.identity, sender.id.connection_id), request.query_id), - // Apparently we ignore errors sending messages. - send_err_msg, - None - ); // This is technically a bug, since this could be empty if the client has another duplicate subscription. // This whole function should be removed soon, so I don't think we need to fix it. let [query] = &*queries else {