···151151 - [ ] write time hist
152152 - [ ] read ops (api)
153153 - [ ] expose internal stats?
154154+- [ ] figure out what's the right thing to do if merge op fails. happened on startup after an unclean reboot.
154155155156156157cache
+14-5
constellation/src/storage/rocks_store.rs
···271271 }
272272273273 fn merge_op_extend_did_ids(
274274- _new_key: &[u8],
274274+ key: &[u8],
275275 existing: Option<&[u8]>,
276276 operands: &MergeOperands,
277277 ) -> Option<Vec<u8>> {
···282282 existing_linkers
283283 }
284284 Err(e) => {
285285- eprintln!("bug? could not deserialize existing target linkers: {e:?}");
286286- return None;
285285+ eprintln!("bug? could not deserialize existing target linkers: {e:?}. key={key:?}. continuing, but data will be lost!");
286286+ if existing_bytes.len() < 1000 {
287287+ eprintln!("dropping: {existing_bytes:?}");
288288+ } else {
289289+ eprintln!("(too long to print)");
290290+ }
291291+ Vec::with_capacity(operands.len())
287292 }
288293 }
289294 } else {
···293298 match _vr(new_linkers) {
294299 Ok(TargetLinkers(new_linkers)) => linkers.extend(new_linkers),
295300 Err(e) => {
296296- eprintln!("bug? could not deserialize new target linkrers: {e:?}");
297297- return None;
301301+ eprintln!("bug? could not deserialize new target linkrers: {e:?}. key={key:?}. continuing, but data will be lost!");
302302+ if new_linkers.len() < 1000 {
303303+ eprintln!("skipping: {new_linkers:?}");
304304+ } else {
305305+ eprintln!("(too long to print)");
306306+ }
298307 }
299308 }
300309 }