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

Method save_hard_state

nodedb-cluster/src/raft_storage.rs:321–359  ·  view source on GitHub ↗
(&mut self, state: &HardState)

Source from the content-addressed store, hash-verified

319 }
320
321 fn save_hard_state(&mut self, state: &HardState) -> nodedb_raft::error::Result<()> {
322 let write_txn =
323 self.db
324 .begin_write()
325 .map_err(|e| nodedb_raft::error::RaftError::Storage {
326 detail: format!("write txn: {e}"),
327 })?;
328 {
329 let mut table =
330 write_txn
331 .open_table(META)
332 .map_err(|e| nodedb_raft::error::RaftError::Storage {
333 detail: format!("open meta: {e}"),
334 })?;
335
336 let bytes = zerompk::to_msgpack_vec(state).map_err(|e| {
337 nodedb_raft::error::RaftError::Storage {
338 detail: format!("serialize: {e}"),
339 }
340 })?;
341 table
342 .insert(KEY_HARD_STATE, bytes.as_slice())
343 .map_err(|e| nodedb_raft::error::RaftError::Storage {
344 detail: format!("insert: {e}"),
345 })?;
346 }
347 write_txn
348 .commit()
349 .map_err(|e| nodedb_raft::error::RaftError::Storage {
350 detail: format!("commit: {e}"),
351 })?;
352
353 debug!(
354 term = state.current_term,
355 voted_for = state.voted_for,
356 "raft hard state saved"
357 );
358 Ok(())
359 }
360
361 fn load_hard_state(&self) -> nodedb_raft::error::Result<HardState> {
362 let read_txn =

Callers 2

hard_state_roundtripFunction · 0.45
survives_reopenFunction · 0.45

Calls 4

begin_writeMethod · 0.80
insertMethod · 0.45
as_sliceMethod · 0.45
commitMethod · 0.45

Tested by 2

hard_state_roundtripFunction · 0.36
survives_reopenFunction · 0.36