fix: import batch snapshot (#268)

This commit is contained in:
Leon Zhao 2024-02-17 10:50:00 +08:00 committed by GitHub
parent f648b353ad
commit 73d5ec5cad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 1 deletions

View file

@ -664,7 +664,8 @@ pub(crate) fn decode_snapshot(doc: &LoroDoc, bytes: &[u8]) -> LoroResult<()> {
let changes = decode_changes(iter.changes, iter.start_counters, peer_ids, deps, ops_map)?;
let (new_ids, pending_changes) = import_changes_to_oplog(changes, &mut oplog)?;
assert!(pending_changes.is_empty());
assert_eq!(&state.frontiers, oplog.frontiers());
// we cannot assert this because frontiers of oplog is not updated yet when batch_importing
// assert_eq!(&state.frontiers, oplog.frontiers());
if !oplog.pending_changes.is_empty() {
drop(oplog);
drop(state);

View file

@ -776,3 +776,18 @@ fn tree_checkout() {
})
.unwrap();
}
#[test]
fn issue_batch_import_snapshot() {
let doc = LoroDoc::new_auto_commit();
doc.set_peer_id(123).unwrap();
let doc2 = LoroDoc::new_auto_commit();
doc2.set_peer_id(456).unwrap();
doc.get_map("map").insert("s", "hello world!").unwrap();
doc2.get_map("map").insert("s", "hello?").unwrap();
let data1 = doc.export_snapshot();
let data2 = doc2.export_snapshot();
let doc3 = LoroDoc::new();
doc3.import_batch(&[data1, data2]).unwrap();
}