Skip to main content

reddb_server/cluster/
mod.rs

1//! Shared cluster identity and membership model.
2
3pub mod bootstrap_authority;
4pub mod commit_resolution;
5pub mod control_plane;
6pub mod cross_range;
7pub mod drain;
8pub mod identity;
9pub mod join;
10pub mod membership;
11pub mod move_range;
12pub mod ownership;
13pub mod ownership_force;
14pub mod ownership_lease;
15pub mod ownership_transition;
16pub mod placement;
17pub mod routing;
18pub mod slot;
19pub mod supervisor;
20pub mod topology;
21
22pub use bootstrap_authority::{
23    authorize as authorize_cluster_bootstrap, authorize_vault_bootstrap, is_cluster_shaped,
24    plan_vault_bootstrap, AuthBootstrapInput, BootstrapDisposition, VaultBootstrapPlan,
25};
26pub use commit_resolution::{
27    is_local_ack, resolve_commit_policy, CollectionDataModel, CommitPolicyResolution,
28    CommitPolicyViolation, FailoverEligibility, GuardrailDisposition, HaIntent, ResolutionSource,
29};
30pub use control_plane::{
31    ControlPlaneConsensus, ControlPlaneEntry, ControlPlaneError, ControlPlaneIndex,
32    ControlPlaneTerm, DurableVoteState, MembershipChange, OwnershipTransition,
33    SingleNodeControlPlane,
34};
35pub use cross_range::{
36    ConsistentReadLeg, ConsistentReadPlan, ConsistentReadReject, GlobalReadWatermark, KeyTarget,
37    PinnedTarget, RangeParticipant, ReadFanout, ReadFanoutReject, ReadLeg, ResolvedTarget,
38    WriteTransactionPlan, WriteTransactionReject, WriterParticipation,
39};
40pub use drain::{
41    drain_status, plan_drain, plan_force_remove, run_drain, run_force_remove, DrainBlock,
42    DrainBlockReason, DrainOutcome, DrainPlan, DrainStatus, DrainStep, ForceCapability,
43    ForceRemoveAudit, ForceRemoveOrder, ForceRemoveOrderError, ForceRemovePlan, ForceRemoveResult,
44    ForcedBlock, ForcedPromotion, OwnedHandoff, RemovalRejection, ReplicaEvacuation,
45};
46pub use identity::{
47    ClusterVoterIdentity, NodeIdentity, NodeIdentityError, ReplicationPeerIdentity,
48};
49pub use join::{ControlPlaneSnapshot, JoinGrant, JoinRejection, JoinRequest, SeedAuthority};
50pub use membership::{
51    AdmissionOutcome, BaselineAssessment, ClusterId, ClusterIdError, ClusterMember, MemberKind,
52    MemberState, MembershipCatalog, RESILIENT_DATA_MEMBER_BASELINE,
53};
54pub use move_range::{
55    classify_move, recover_interrupted_move, split_range, MoveError, MoveKind, MovePhase,
56    MoveRange, MoveRecovery, RangeSplit, SplitError, SplitPolicy, SplitSide,
57};
58pub use ownership::{
59    CatalogError, CatalogVersion, CollectionId, CollectionIdError, OwnershipEpoch,
60    PlacementMetadata, RangeBound, RangeBounds, RangeBoundsError, RangeId, RangeOwnership,
61    RangeRole, RangeWriteReject, ShardKeyMode, ShardOwnershipCatalog, UpdateOutcome,
62};
63pub use ownership_force::{
64    force_transition, EmptyOperatorReason, ForceDenial, ForceFailure, ForceTransitionCapability,
65    ForcedTransitionAudit, ForcedTransitionDisposition, ForcedTransitionRequest, OperatorReason,
66};
67pub use ownership_lease::{
68    admit_durable_write, DurableWriteReject, FenceReason, LeaseFenceRejection, LeasedOwner,
69    OwnerWriteMode, OwnershipLease, RangeRequest, SupervisorTerm,
70};
71pub use ownership_transition::{
72    prepare, run_transition, CatchUpEvidence, CommitWatermark, InvalidCandidateReason,
73    PreparedTransition, TransitionError, TransitionKind, TransitionOutcome, TransitionRejection,
74    TransitionRequest,
75};
76pub use placement::{
77    HotspotRange, MemberCapacity, MoveReason, PlacementPolicy, PlacementSignals, PlannedMove,
78    RangeLoad, RebalancePlan, WeightedPlacementPlanner, NEUTRAL_OPERATOR_WEIGHT,
79};
80pub use routing::{
81    RedirectReason, RequestOperation, RouteDecision, RoutedRequest, RoutingHint, RoutingPolicy,
82    DEFAULT_MAX_FORWARD_PAYLOAD,
83};
84pub use slot::{
85    hash_shard_key_to_range_key, hash_shard_key_to_slot, HashSlot, HashSlotError,
86    PRODUCTION_HASH_SLOT_COUNT,
87};
88pub use supervisor::{
89    BlockedFailover, BlockedReason, ClusterSignals, ClusterSupervisor, FailoverPlan, HealthClass,
90    HealthPolicy, HealthScore, MemberSignals, PlannedPromotion,
91};
92pub use topology::{
93    ClientTopology, HintOutcome, RefreshOutcome, TopologyRange, TopologySnapshot, TopologyUpdate,
94};