···461461 rkey: RecordKey,
462462 ) -> anyhow::Result<usize> {
463463 let key_prefix_bytes =
464464- ByIdKey::record_prefix(did, collection.clone(), rkey).to_db_bytes()?;
464464+ ByIdKey::record_prefix(did.clone(), collection.clone(), rkey.clone()).to_db_bytes()?;
465465+466466+ // put the cursor of the actual deletion event in to prevent prefix iter from touching newer docs
467467+ let key_limit =
468468+ ByIdKey::new(did, collection.clone(), rkey, cursor.clone()).to_db_bytes()?;
465469466470 let mut items_removed = 0;
467471468468- log::trace!("delete_record: iterate over prefix(!)...");
469469- for (i, pair) in self.partition.prefix(&key_prefix_bytes).enumerate() {
472472+ log::trace!("delete_record: iterate over up to current cursor...");
473473+ for (i, pair) in self.partition.range(key_prefix_bytes..key_limit).enumerate() {
470474 log::trace!("delete_record iter {i}: found");
471475 // find all (hopefully 1)
472476 let (key_bytes, _) = pair?;
···474478 let found_cursor = key.cursor();
475479 if found_cursor > cursor {
476480 // we are *only* allowed to delete records that came before the record delete event
477477- log::trace!("delete_record: found (and ignoring) newer version(s). key: {key:?}");
478478- break;
481481+ // log::trace!("delete_record: found (and ignoring) newer version(s). key: {key:?}");
482482+ panic!("wtf, found newer version than cursor limit we tried to set.");
483483+ // break;
479484 }
480485481486 // remove the by_id entry