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(); };