dynomite-engine 0.0.3

Embeddable Dynamo-style distributed replication engine: token-ring partitioning, gossip cluster, hinted handoff, anti-entropy, RediSearch FT.* surface.
Documentation
[package]
name = "dynomite-engine"
description = "Embeddable Dynamo-style distributed replication engine: token-ring partitioning, gossip cluster, hinted handoff, anti-entropy, RediSearch FT.* surface."
version = "0.0.3"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
homepage = "https://github.com/gburd/dynomite"
documentation = "https://docs.rs/dynomite"
readme = "README.md"
keywords = ["dynamo", "distributed", "cluster", "replication", "redis"]
categories = ["database-implementations", "network-programming", "concurrency"]
include = [
    "/src/**/*.rs",
    "/examples/**/*.rs",
    "/Cargo.toml",
    "/README.md",
]

[package.metadata.docs.rs]
all-features = false
targets = ["x86_64-unknown-linux-gnu"]

[lints]
workspace = true

[lib]
name = "dynomite"
path = "src/lib.rs"

[dependencies]
tokio = { workspace = true }
tokio-util = { workspace = true }
bytes = { workspace = true }
futures-core = { workspace = true }
serde = { workspace = true }
serde_yaml = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
thiserror = { workspace = true }
crossbeam-channel = { workspace = true }
crossbeam-queue = { workspace = true }
parking_lot = { workspace = true }
ahash = { workspace = true }
quiche = { workspace = true, optional = true }
aes = { workspace = true }
cbc = { workspace = true }
cipher = { workspace = true }
rsa = { workspace = true }
sha1 = { workspace = true }
rand = { workspace = true }
rand_core = { workspace = true }
base64 = { workspace = true }
nix = { workspace = true }
socket2 = { workspace = true }
httparse = { workspace = true }
prometheus = { workspace = true }

# TLS for the peer plane (DNODE inbound + outbound). Always on:
# behaviour is unchanged when the operator does not configure a
# cert / key, so the cost is a single rustls dep.
rustls = { workspace = true }
tokio-rustls = { workspace = true }
rustls-pemfile = { workspace = true }
webpki-roots = { workspace = true }

# Storage-substrate dep declared so the resolver exercises the
# Noxu DB version graph. Gated behind the disabled-by-default
# `riak-storage` feature; nothing in the engine imports `noxu`
# yet. See docs/riak-compat-plan.md.
noxu = { workspace = true, optional = true }

# Distributed-tracing OTel handles. The library only consumes
# the `tracing` instrumentation macros and the `OpenTelemetrySpanExt`
# adapter exposed by `tracing-opentelemetry`; the OTLP exporter
# wiring lives in the `dynomited` binary.
tracing-opentelemetry = { workspace = true }
opentelemetry = { workspace = true }

# Syslog-style timestamp formatting for the rfc3164/rfc5424 log
# formats.
time = { workspace = true }

# Tokio-free token-bucket primitive. The dynomite-side wrapper in
# `runtime::throttle` adds the tokio-async `acquire` and the
# Prometheus histogram on top of the algorithm in this crate.
throttle-core = { path = "../throttle-core", version = "0.0.1" }

# JSON serialisation for the structured-logging shim in
# `core::log` (mirrors the `dyn_log_format=json` mode of the
# C reference). The vector + text + FT.* surface that used
# to live in this crate has moved to the `dynomite-search`
# crate; this dep stays here only for the log shim.
serde_json = { workspace = true }

[dev-dependencies]
hegeltest = { workspace = true }
criterion = { workspace = true }
tempfile = { workspace = true }
hex = { workspace = true }
tokio = { workspace = true, features = ["full", "test-util"] }
rcgen = { workspace = true }
regex = { workspace = true }

[features]
default = ["tcp", "tls"]
tcp = []
quic = ["dep:quiche"]
tls = []
# Riak-compatible API + Noxu storage backend. Off by default;
# enabling it only forces the resolver to walk the noxu dep
# graph, validating that our crate-version pins are compatible.
# No source-level imports yet. See docs/riak-compat-plan.md.
riak-storage = ["dep:noxu"]
# Enables the macro (end-to-end with tc/netem) bench harness.
# Requires CAP_NET_ADMIN; see docs/book/src/operations/benchmarks.md.
bench-macro = []
# Enables the Stage 16 chaos / punishment / stress test
# (`tests/stage_16_chaos.rs`). The test compiles only when this
# feature is on so a default `cargo test` run does not pull in
# the heavy harness. The smoke 60-second variant runs in CI
# when CHAOS_DURATION_SECS=60 is set; the full 1-hour run is a
# manual pre-tag gate. See docs/book/src/operations/chaos.md.
chaos = []

[[bench]]
name = "parsers"
harness = false

[[bench]]
name = "mbuf"
harness = false

[[bench]]
name = "hashkit"
harness = false

[[bench]]
name = "random_slicing"
harness = false

[[bench]]
name = "tokens"
harness = false

[[bench]]
name = "dnode"
harness = false

[[bench]]
name = "crypto"
harness = false

[[bench]]
name = "quorum"
harness = false

[[bench]]
name = "macro_throughput"
harness = false