From 29928cb4a7d5bb10574be912172af6a8fa9d5ffd Mon Sep 17 00:00:00 2001 From: Bartosz Sypytkowski Date: Wed, 1 May 2024 14:14:27 +0200 Subject: [PATCH] chore: add more detailed logging around errors in Transaction::try_encode_state_as_update_v1 (#514) --- libs/collab-rt-protocol/src/protocol.rs | 23 ++++++++++--------- .../src/group/protocol.rs | 7 +++++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/libs/collab-rt-protocol/src/protocol.rs b/libs/collab-rt-protocol/src/protocol.rs index d85a4468..0b1a2f11 100644 --- a/libs/collab-rt-protocol/src/protocol.rs +++ b/libs/collab-rt-protocol/src/protocol.rs @@ -52,7 +52,7 @@ impl CollabSyncProtocol for ClientSyncProtocol { RTProtocolError::YrsTransaction(format!("sync step2 transaction acquire: {}", err)) })?; txn.try_apply_update(update).map_err(|err| { - RTProtocolError::YrsApplyUpdate(format!("sync step2 apply update: {}", err)) + RTProtocolError::YrsApplyUpdate(format!("sync step2 apply update: {} ", err)) })?; // If the client can't apply broadcast from server, which means the client is missing some @@ -121,16 +121,17 @@ pub trait CollabSyncProtocol { awareness: &Awareness, sv: StateVector, ) -> Result>, RTProtocolError> { - let update = awareness - .doc() - .try_transact() - .map_err(|err| { - RTProtocolError::YrsTransaction(format!("fail to handle sync step1. error: {}", err)) - })? - .try_encode_state_as_update_v1(&sv) - .map_err(|err| { - RTProtocolError::YrsEncodeState(format!("fail to encode state as update. error: {}", err)) - })?; + let txn = awareness.doc().try_transact().map_err(|err| { + RTProtocolError::YrsTransaction(format!("fail to handle sync step1. error: {}", err)) + })?; + let update = txn.try_encode_state_as_update_v1(&sv).map_err(|err| { + RTProtocolError::YrsEncodeState(format!( + "fail to encode state as update. error: {}\ninit state vector: {:?}\ndocument state: {:#?}", + err, + sv, + txn.store() + )) + })?; Ok(Some( Message::Sync(SyncMessage::SyncStep2(update)).encode_v1(), )) diff --git a/services/appflowy-collaborate/src/group/protocol.rs b/services/appflowy-collaborate/src/group/protocol.rs index d15ad94f..3cc33bce 100644 --- a/services/appflowy-collaborate/src/group/protocol.rs +++ b/services/appflowy-collaborate/src/group/protocol.rs @@ -21,7 +21,12 @@ impl CollabSyncProtocol for ServerSyncProtocol { })?; let client_step2_update = txn.try_encode_state_as_update_v1(&sv).map_err(|err| { - RTProtocolError::YrsEncodeState(format!("fail to encode state as update. error: {}", err)) + RTProtocolError::YrsEncodeState(format!( + "fail to encode state as update. error: {}\ninit state vector: {:?}\ndocument state: {:#?}", + err, + sv, + txn.store() + )) })?; // Retrieve the latest document state from the client after they return online from offline editing.