fn load_node()

in librabft-v2/src/node.rs [211:231]


    fn load_node(context: &mut Context, node_time: NodeTime) -> AsyncResult<Self> {
        Box::pin(async move {
            let value = context
                .read_value("node_state".to_string())
                .await?
                .ok_or_else(|| anyhow!("missing state value"))?;
            let node: Self = bincode::deserialize(&value)?;
            let previous_time = std::cmp::max(
                node.latest_query_all_time,
                std::cmp::max(
                    node.tracker.latest_commit_time,
                    node.pacemaker.active_round_start_time,
                ),
            );
            anyhow::ensure!(
                node_time >= previous_time,
                "refusing to restore saved state from the future"
            );
            Ok(node)
        })
    }