openraft 0.10.0-alpha.18

Advanced Raft consensus
Documentation
- [Getting Started]#getting-started
  * [How to initialize a cluster?]#how-to-initialize-a-cluster
  * [Are there any issues with running a single node service?]#are-there-any-issues-with-running-a-single-node-service
  * [Can I call `initialize()` on multiple nodes?]#can-i-call-initialize-on-multiple-nodes
- [Core Concepts]#core-concepts
  * [What are the differences between Openraft and standard Raft?]#what-are-the-differences-between-openraft-and-standard-raft
  * [Why is log id a tuple of `(term, node_id, log_index)`?]#why-is-log-id-a-tuple-of-term-node_id-log_index
- [Configuration & Tuning]#configuration--tuning
  * [How do leader elections get triggered?]#how-do-leader-elections-get-triggered
  * [How to customize snapshot-building policy?]#how-to-customize-snapshot-building-policy
  * [Frequent leader elections and timeouts]#frequent-leader-elections-and-timeouts
  * [Slow replication performance with RocksDB or disk storage]#slow-replication-performance-with-rocksdb-or-disk-storage
  * [Can I use a custom serialization format like bitcode instead of serde?]#can-i-use-a-custom-serialization-format-like-bitcode-instead-of-serde
- [Storage]#storage
  * [Does the state machine need to be persisted to disk?]#does-the-state-machine-need-to-be-persisted-to-disk
  * [How does Openraft handle snapshot building and transfer?]#how-does-openraft-handle-snapshot-building-and-transfer
  * [How to synchronize snapshots from leader to followers without rebuilding?]#how-to-synchronize-snapshots-from-leader-to-followers-without-rebuilding
- [Monitoring & Observability]#monitoring--observability
  * [How to get notified when the server state changes?]#how-to-get-notified-when-the-server-state-changes
  * [How to detect if a leader is valid?]#how-to-detect-if-a-leader-is-valid
  * [How to detect which nodes are currently down or unreachable?]#how-to-detect-which-nodes-are-currently-down-or-unreachable
  * [How to minimize error logging when a follower is offline]#how-to-minimize-error-logging-when-a-follower-is-offline
  * [How to start/stop services when a node becomes leader?]#how-to-startstop-services-when-a-node-becomes-leader
- [Operations & Maintenance]#operations--maintenance
  * [What actions are required when a node restarts?]#what-actions-are-required-when-a-node-restarts
  * [How to remove node-2 safely from a cluster `{1, 2, 3}`?]#how-to-remove-node-2-safely-from-a-cluster-1-2-3
  * [Does OpenRaft support calling `change_membership` in parallel?]#does-openraft-support-calling-change_membership-in-parallel
  * [How do I store additional information about nodes in Openraft?]#how-do-i-store-additional-information-about-nodes-in-openraft
  * [Write returns `ForwardToLeader` but leader info is missing]#write-returns-forwardtoleader-but-leader-info-is-missing
  * [Error logs after `raft.shutdown()` completes]#error-logs-after-raftshutdown-completes
- [Troubleshooting & Safety]#troubleshooting--safety
  * [Panic: "assertion failed: self.internal_server_state.is_following()"]#panic-assertion-failed-selfinternal_server_stateis_following
  * [Holding `Raft::metrics()` reference blocks the Raft node]#holding-raftmetrics-reference-blocks-the-raft-node
  * [What will happen when data gets lost?]#what-will-happen-when-data-gets-lost
  * [Can I wipe out the data of ONE node and wait for the leader to replicate all data to it again?]#can-i-wipe-out-the-data-of-one-node-and-wait-for-the-leader-to-replicate-all-data-to-it-again
  * [Is Openraft resilient to incorrectly configured clusters?]#is-openraft-resilient-to-incorrectly-configured-clusters
  * [Excessive "RPCError err=NetworkError" in logs when a node is offline]#excessive-rpcerror-errnetworkerror-in-logs-when-a-node-is-offline