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 moreSource§impl Debug for PoolConfig
impl Debug for PoolConfig
Auto Trait Implementations§
impl Freeze for PoolConfig
impl RefUnwindSafe for PoolConfig
impl Send for PoolConfig
impl Sync for PoolConfig
impl Unpin for PoolConfig
impl UnsafeUnpin for PoolConfig
impl UnwindSafe for PoolConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.