- [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)