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

Method truncate

nodedb-cluster/src/raft_storage.rs:129–175  ·  view source on GitHub ↗
(&mut self, index: u64)

Source from the content-addressed store, hash-verified

127 }
128
129 fn truncate(&mut self, index: u64) -> nodedb_raft::error::Result<()> {
130 let write_txn =
131 self.db
132 .begin_write()
133 .map_err(|e| nodedb_raft::error::RaftError::Storage {
134 detail: format!("write txn: {e}"),
135 })?;
136 {
137 let mut table = write_txn.open_table(ENTRIES).map_err(|e| {
138 nodedb_raft::error::RaftError::Storage {
139 detail: format!("open entries: {e}"),
140 }
141 })?;
142
143 // Collect keys >= index to remove.
144 let start = index_key(index);
145 let keys_to_remove: Vec<[u8; 8]> = table
146 .range(start.as_slice()..)
147 .map_err(|e| nodedb_raft::error::RaftError::Storage {
148 detail: format!("range: {e}"),
149 })?
150 .filter_map(|r| {
151 r.ok().map(|(k, _)| {
152 let mut buf = [0u8; 8];
153 buf.copy_from_slice(k.value());
154 buf
155 })
156 })
157 .collect();
158
159 for key in &keys_to_remove {
160 table.remove(key.as_slice()).map_err(|e| {
161 nodedb_raft::error::RaftError::Storage {
162 detail: format!("remove: {e}"),
163 }
164 })?;
165 }
166 }
167 write_txn
168 .commit()
169 .map_err(|e| nodedb_raft::error::RaftError::Storage {
170 detail: format!("commit truncate: {e}"),
171 })?;
172
173 debug!(from_index = index, "raft log truncated");
174 Ok(())
175 }
176
177 fn load_entries_after(&self, snapshot_index: u64) -> nodedb_raft::error::Result<Vec<LogEntry>> {
178 let read_txn =

Callers 11

truncate_removes_tailFunction · 0.45
merge_scored_hitsMethod · 0.45
mergeMethod · 0.45
mergeMethod · 0.45
handle_chunkFunction · 0.45
pick_helpersMethod · 0.45
truncate_piggybackMethod · 0.45
take_for_messageMethod · 0.45
handle_chunkMethod · 0.45
top_kMethod · 0.45

Calls 8

begin_writeMethod · 0.80
collectMethod · 0.80
index_keyFunction · 0.70
rangeMethod · 0.45
as_sliceMethod · 0.45
okMethod · 0.45
removeMethod · 0.45
commitMethod · 0.45

Tested by 2

truncate_removes_tailFunction · 0.36