MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / on_compaction_complete

Method on_compaction_complete

nodedb-columnar/src/mutation/flush.rs:60–90  ·  view source on GitHub ↗

Notify the engine that compaction completed. Remaps PK index entries and removes old delete bitmaps.

(
        &mut self,
        old_segment_ids: &[u64],
        new_segment_id: u64,
        row_mapping: &HashMap<(u64, u32), u32>,
    )

Source from the content-addressed store, hash-verified

58 ///
59 /// Remaps PK index entries and removes old delete bitmaps.
60 pub fn on_compaction_complete(
61 &mut self,
62 old_segment_ids: &[u64],
63 new_segment_id: u64,
64 row_mapping: &HashMap<(u64, u32), u32>,
65 ) -> MutationResult {
66 // Remap PK index for each old segment.
67 for &old_seg in old_segment_ids {
68 self.pk_index.remap_segment(old_seg, |old_row| {
69 row_mapping
70 .get(&(old_seg, old_row))
71 .map(|&new_row| RowLocation {
72 segment_id: new_segment_id,
73 row_index: new_row,
74 })
75 });
76
77 // Remove old delete bitmap.
78 self.delete_bitmaps.remove(&old_seg);
79 }
80
81 let wal = ColumnarWalRecord::CompactionCommit {
82 collection: self.collection.clone(),
83 old_segment_ids: old_segment_ids.to_vec(),
84 new_segment_ids: vec![new_segment_id],
85 };
86
87 MutationResult {
88 wal_records: vec![wal],
89 }
90 }
91}

Callers

nothing calls this directly

Calls 5

remap_segmentMethod · 0.80
getMethod · 0.45
removeMethod · 0.45
cloneMethod · 0.45
to_vecMethod · 0.45

Tested by

no test coverage detected