Skip to main content

laminar_core/cluster/control/
mod.rs

1//! Cluster control plane: leader election, assignment snapshots, and
2//! barrier coordination.
3
4pub mod barrier;
5pub mod catalog_manifest;
6pub mod controller;
7pub mod leader;
8pub mod leader_lease;
9mod lease_deadline;
10mod namespace_proof;
11pub mod process_lease;
12pub mod snapshot;
13
14pub use crate::checkpoint::{
15    CheckpointAssignmentAdoption, CheckpointAssignmentFence, CheckpointParticipant, LeaderProof,
16    LeaderProofOwner,
17};
18pub use barrier::{
19    BarrierAck, BarrierAckDisposition, BarrierAnnouncement, BarrierCoordinator, ClusterKv,
20    InMemoryKv, Phase, QuorumOutcome, ACK_KEY, ANNOUNCEMENT_KEY,
21};
22#[cfg(feature = "cluster")]
23pub use controller::CheckpointPrepareObservation;
24pub use controller::{
25    ClusterController, LocalProcessAuthorityEvidence, LocalProcessAuthorityEvidenceError,
26    LocalProcessAuthorityIdentity, RecoverPhase, RecoveryAdmissionSnapshot, RecoveryAnnouncement,
27    RecoveryControlError, RecoveryFault, RecoveryFaultDisposition, RecoveryFaultReportOutcome,
28    RecoveryFaultRequest, RecoveryRound, RecoveryRoundId, RecoveryStoppedReport,
29    ReleaseCommitStatus,
30};
31// Re-exported from `crate::checkpoint_decision` (lives outside the
32// cluster gate because single-instance also relies on it for crash-safe
33// 2PC). Callers that already qualify with `cluster::control::…` keep
34// working.
35pub use crate::checkpoint_decision::{CheckpointDecisionStore, DecisionError};
36pub use catalog_manifest::{
37    CatalogManifest, CatalogManifestEntry, CatalogManifestError, CatalogManifestRef,
38    CatalogManifestStore, CatalogObjectKind, CatalogSealOutcome,
39};
40pub use leader::leader_of;
41pub use leader_lease::{
42    lease_grants_leadership, lease_grants_proof, AssignmentDrainDecision, AssignmentDrainVerdict,
43    AssignmentRecoveryDecision, ClusterArtifactCleanupCursor, ClusterArtifactCleanupPhase,
44    ClusterAttemptStatus, ClusterCheckpointAuthorityError, ClusterOutcomeInventory,
45    ClusterOutcomeRetentionBoundary, LeaderCandidacy, LeaderLease, LeaderLeaseConfig,
46    LeaderLeaseManager, LeaderLeaseObservation, LeaderLeaseOwner, LeaderLeaseStore, LeaseError,
47    LeaseOutcome, RecordAssignmentDrainDecisionResult, RecordAssignmentRecoveryDecisionResult,
48    SubscriptionReplayPin, SubscriptionReplayPinAcquire, SUBSCRIPTION_REPLAY_PIN_RENEW_INTERVAL,
49};
50pub use lease_deadline::LeaseDeadline;
51pub use namespace_proof::{
52    prove_shared_object_store_namespaces, NamespaceProofError, VerifiedClusterNamespaces,
53    MAX_SHARED_NAMESPACE_PROOF_TIMEOUT,
54};
55pub use process_lease::{
56    ProcessLease, ProcessLeaseAuthority, ProcessLeaseConfig, ProcessLeaseError, ProcessLeaseFence,
57    ProcessLeaseManager, ProcessLeaseObservation, ProcessLeaseOutcome, ProcessLeaseStore,
58};
59pub use snapshot::{
60    AssignmentSnapshot, AssignmentSnapshotRef, AssignmentSnapshotStore, RotateOutcome,
61    SnapshotError,
62};
63
64#[cfg(feature = "cluster")]
65pub mod chitchat_kv;
66#[cfg(feature = "cluster")]
67pub use chitchat_kv::ChitchatKv;
68
69#[cfg(feature = "cluster")]
70pub mod tls;
71#[cfg(feature = "cluster")]
72pub use tls::{claim_cluster_plaintext, set_cluster_tls, ClusterTls};