From 0e5e4d8aab0a0b9cf82919ef597a0013e3cb9cfa Mon Sep 17 00:00:00 2001 From: Carlos Scheidegger <285675+cscheid@users.noreply.github.com> Date: Tue, 3 Mar 2026 18:02:07 -0600 Subject: [PATCH] don't move to NotFound if there are pending messages (#1) --- samod-core/src/actors/document/doc_state.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/samod-core/src/actors/document/doc_state.rs b/samod-core/src/actors/document/doc_state.rs index 77c27da..aca33f3 100644 --- a/samod-core/src/actors/document/doc_state.rs +++ b/samod-core/src/actors/document/doc_state.rs @@ -161,10 +161,18 @@ impl DocState { // .add_on_disk(snapshots.into_keys().chain(incrementals.into_keys())); if matches!(self.phase, Phase::Loading { .. }) { if self.doc.get_heads().is_empty() { - let eligible_conns = peer_connections + // Check if there are pending sync messages from peers that may + // contain the document data. If so, we must process them before + // deciding the document is not found. + let pending_msg_count = if let Phase::Loading { pending_sync_messages } = &self.phase { + pending_sync_messages.values().map(|v| v.len()).sum::() + } else { + 0 + }; + let eligible_conns = peer_connections .values() .any(|p| p.announce_policy() != AnnouncePolicy::DontAnnounce); - if eligible_conns || self.any_dialer_connecting { + if eligible_conns || self.any_dialer_connecting || pending_msg_count > 0 { tracing::debug!( eligible_conns, self.any_dialer_connecting,