From c050e073b68205bae7389fb86958cb9331e1a3be Mon Sep 17 00:00:00 2001 From: Tony <68118705+Legend-Master@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:49:36 +0800 Subject: [PATCH] fix(store): `apply_pending_auto_save` can deadlock (#3572) --- .changes/store-pending-audo-save-deadlock.md | 6 ++++++ plugins/store/src/store.rs | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changes/store-pending-audo-save-deadlock.md diff --git a/.changes/store-pending-audo-save-deadlock.md b/.changes/store-pending-audo-save-deadlock.md new file mode 100644 index 000000000..ef8d1a452 --- /dev/null +++ b/.changes/store-pending-audo-save-deadlock.md @@ -0,0 +1,6 @@ +--- +"store": patch +"store-js": patch +--- + +Fix `apply_pending_auto_save` can deadlock the store diff --git a/plugins/store/src/store.rs b/plugins/store/src/store.rs index 088dcc240..b597a4369 100644 --- a/plugins/store/src/store.rs +++ b/plugins/store/src/store.rs @@ -600,7 +600,8 @@ impl Store { fn apply_pending_auto_save(&self) { // Cancel and save if auto save is pending - if let Some(sender) = self.auto_save_debounce_sender.lock().unwrap().take() { + let auto_save_debounce_sender = self.auto_save_debounce_sender.lock().unwrap().take(); + if let Some(sender) = auto_save_debounce_sender { let _ = sender.send(AutoSaveMessage::Cancel); let _ = self.save(); };