Cargo Features
Openraft has no features set by default.
[dependencies]
openraft = { version = "0.9.17", features = ["bench", "bt", "serde", "single-term-leader", "compat", "storage-v2", "singlethreaded", "loosen-follower-log-revert", "generic-snapshot-data", "tracing-log", "serde_json"] }
- bench
-
Enables benchmarks in unittest.
Benchmark in openraft depends on the unstable feature
test
thus it can not be used with stable rust. In order to run the benchmark with stable toolchain, the unstable features have to be enabled explicitly with environment variableRUSTC_BOOTSTRAP=1
. - bt
-
Enable backtrace when generating an error.
Stable rust does not support backtrace. - serde
-
Add serde::Serialize and serde:Deserialize bound to data types. If you'd like to use
serde
to serialize messages.Enables serde
Affects
openraft::OptionalSerde
,node::NodeId
,node::Node
… - single-term-leader
-
Turn on this feature it allows at most ONE quorum-granted leader for each term. This is the way standard raft does, by making the LeaderId a partial order value.
-
With this feature on: It is more likely to conflict during election. But every log only needs to store one
term
in it. -
With this feature off: Election conflict rate will be reduced, but every log has to store a
LeaderId{ term, node_id}
, which may be costly if an application uses a big NodeId type.
This feature is disabled by default.
-
- compat
-
Provide basic compatible types
Affects
openraft::compat
… - storage-v2
-
Allows an application to implement a custom the v2 storage API. See
openraft::storage::v2
for more details. V2 API are unstable and may change in the future. - singlethreaded
-
Disallows applications to share a raft instance with multiple threads.
Enables singlethreaded of openraft-macros
Affects
openraft::OptionalSend
,openraft::OptionalSync
… - loosen-follower-log-revert
-
Permit the follower's log to roll back to an earlier state without causing the leader to panic.
Although log state reversion is typically seen as a bug, enabling it can be useful for testing or other special scenarios.
For instance, in an even number nodes cluster, erasing a node's data and then rebooting it(log reverts to empty) will not result in data loss. - generic-snapshot-data
-
Enable this feature flag to eliminate the `AsyncRead + AsyncWrite + AsyncSeek
- Unpin
bound from
RaftTypeConfig::SnapshotData`.
Enabling this feature allows applications to use a custom snapshot data format and transport fragmentation, diverging from the default implementation which typically relies on a single-file structure .
By default it is off. This feature is introduced in 0.9.0
Affects
network::RaftNetwork.install_snapshot
,network::RaftNetwork.full_snapshot
… - Unpin
- tracing-log
-
Enables "log" feature in
tracing
crate, to let tracing events emit log record. See: https://docs.rs/tracing/latest/tracing/#emitting-log-records
Features from optional dependencies
In crates that don't use the dep:
syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.
- anyhow bt?
- serde_json implicit feature
-
Enables serde_json
serde_json:
A JSON serialization file format