MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / ensure_span_index

Method ensure_span_index

atomic-core/src/pristine/txn/read.rs:1506–1526  ·  view source on GitHub ↗

Load `change_id`'s spans into the in-memory index on first access.

(&self, change_id: u64)

Source from the content-addressed store, hash-verified

1504
1505 /// Load `change_id`'s spans into the in-memory index on first access.
1506 fn ensure_span_index(&self, change_id: u64) -> PristineResult<()> {
1507 if self.span_index.lock().unwrap().contains_change(change_id) {
1508 return Ok(());
1509 }
1510 let start_key = encode_vertex(change_id, 0, 0);
1511 let end_key = encode_vertex(change_id, u64::MAX, u64::MAX);
1512 let mut set = std::collections::BTreeSet::new();
1513 for result in self.graph_table.range::<&[u8; 24]>(&start_key..=&end_key)? {
1514 let (key, _values) = result?;
1515 let (v_change, v_start, v_end) = decode_vertex(key.value());
1516 if v_change != change_id {
1517 continue;
1518 }
1519 set.insert((v_start, v_end));
1520 }
1521 self.span_index
1522 .lock()
1523 .unwrap()
1524 .insert_change(change_id, set);
1525 Ok(())
1526 }
1527}
1528
1529impl<'txn> GraphTxnT for CachedGraphTxn<'txn> {

Callers 2

find_blockMethod · 0.80
find_block_endMethod · 0.80

Calls 6

encode_vertexFunction · 0.85
decode_vertexFunction · 0.85
contains_changeMethod · 0.80
unwrapMethod · 0.45
insertMethod · 0.45
insert_changeMethod · 0.45

Tested by

no test coverage detected