pub struct PoolConfig {Show 20 fields
pub name: String,
pub dc: String,
pub rack: String,
pub data_store: DataStore,
pub hash: HashType,
pub distribution: Distribution,
pub distribution_shadow: Option<Distribution>,
pub read_consistency: ConsistencyLevel,
pub write_consistency: ConsistencyLevel,
pub timeout_ms: u64,
pub server_retry_timeout_ms: u64,
pub server_failure_limit: u32,
pub auto_eject_hosts: bool,
pub enable_gossip: bool,
pub bucket_types: Vec<BucketType>,
pub default_bucket_type: Option<String>,
pub enable_hinted_handoff: bool,
pub hint_ttl_seconds: u64,
pub hint_store_max_bytes: u64,
pub hint_drain_interval_ms: u64,
}Expand description
Minimal projection of the YAML pool block consumed by the cluster runtime.
Mirrors the fields the reference engine copies from
conf_pool into server_pool during server_pool_init.
Fields§
§name: StringPool name.
dc: StringLocal datacenter name.
rack: StringLocal rack name.
data_store: DataStoreBacking datastore protocol.
hash: HashTypeHash function used for token ring lookups.
distribution: DistributionDistribution algorithm used to map a hashed key to a
peer. Defaults to Distribution::Vnode.
distribution_shadow: Option<Distribution>Optional shadow distribution. When Some, the
dispatcher computes both the live and shadow routes for
every request and bumps a counter when they disagree.
The actual route is the configured
Self::distribution.
read_consistency: ConsistencyLevelRead consistency level.
write_consistency: ConsistencyLevelWrite consistency level.
timeout_ms: u64Operation timeout in milliseconds.
server_retry_timeout_ms: u64Eject window (server_retry_timeout_ms).
server_failure_limit: u32Consecutive-failure threshold.
auto_eject_hosts: boolHonor auto_eject_hosts.
enable_gossip: boolWhether gossip is enabled (enable_gossip).
bucket_types: Vec<BucketType>Per-bucket routing-property bundles. Empty when the
bucket_types: YAML stanza is unset.
default_bucket_type: Option<String>Name of the bucket type to apply when the request key has
no slash. References an entry of bucket_types; None
keeps the pool-level defaults.
enable_hinted_handoff: boolHinted-handoff feature flag. When true, writes targeted
at peers in crate::cluster::peer::PeerState::Down (or
at peers whose outbound channel is closed / full) are
stored as hints in the node-local
crate::cluster::hints::HintStore and counted toward
the request’s consistency threshold. The default false
preserves the legacy behaviour where Down targets are
silently skipped.
hint_ttl_seconds: u64Hint expiry, in seconds. Hints older than this are dropped during the periodic sweep so the in-memory store stays bounded.
hint_store_max_bytes: u64Upper bound on the in-memory hint store. Once the store holds this many bytes, further enqueues fail and the dispatcher falls back to its non-handoff error path.
hint_drain_interval_ms: u64Hint drainer cadence, in milliseconds. Setting this to
zero is rejected by the configuration validator when
enable_hinted_handoff is true.
Implementations§
Source§impl PoolConfig
impl PoolConfig
Sourcepub fn lookup_bucket_type(&self, name: &[u8]) -> Option<&BucketType>
pub fn lookup_bucket_type(&self, name: &[u8]) -> Option<&BucketType>
Look up a bucket type by name.
Returns the matching BucketType when one is
configured. The dispatcher consults this on every request
to swap in per-bucket consistency / fan-out settings.
Sourcepub fn resolve_bucket_type(&self, bucket: Option<&[u8]>) -> Option<&BucketType>
pub fn resolve_bucket_type(&self, bucket: Option<&[u8]>) -> Option<&BucketType>
Resolve the bucket type that applies to a request whose
extracted bucket name is bucket. None falls back to
default_bucket_type (also possibly None).
Source§impl PoolConfig
impl PoolConfig
Sourcepub fn from_conf(name: &str, pool: &ConfPool) -> Self
pub fn from_conf(name: &str, pool: &ConfPool) -> Self
Construct a PoolConfig from a ConfPool block. Fields
missing from the YAML are filled with the same defaults the
reference engine applies in conf_pool_each_transform (the
caller is expected to have called
crate::conf::Config::finalize before this point).
§Examples
use dynomite::cluster::pool::PoolConfig;
use dynomite::conf::Config;
let mut cfg = Config::parse_str(
"p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n",
).unwrap();
cfg.finalize();
let pc = PoolConfig::from_conf("p", cfg.pool());
assert_eq!(pc.name, "p");Trait Implementations§
Source§impl Clone for PoolConfig
impl Clone for PoolConfig
Source§fn clone(&self) -> PoolConfig
fn clone(&self) -> PoolConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more