extern crate self as hydracache;
mod admission;
mod backup;
mod builder;
mod cache;
mod cluster;
mod consistency;
mod entry;
mod events;
mod grid;
mod inflight;
mod invalidation_bus;
mod refresh;
mod security;
mod stats;
mod tag_index;
pub mod testing;
mod typed;
pub use admission::{
AdmissionController, AdmissionError, AdmissionLimits, AdmissionPermit, AdmissionQueueTicket,
AdmissionRejectionReason, AdmissionSnapshot,
};
pub use backup::{
read_manifest, restore_backup_to_point, write_full_backup, write_pitr_log, BackupDataset,
BackupEntry, BackupError, BackupManifest, InMemoryObjectStore, ObjectStore, PitrLog,
PitrRecord, BACKUP_MANIFEST_FORMAT_VERSION,
};
pub use builder::HydraCacheBuilder;
pub use cache::HydraCache;
pub use cluster::{
partition_for_key, validate_replica_config, ChitchatStyleDiscovery, ClientAck, ClientOp,
ClusterAdmissionBridge, ClusterAdmissionBridgeConfig, ClusterAdmissionBridgeDiagnostics,
ClusterAdmissionBridgeEvent, ClusterAdmissionBridgeHandle, ClusterAdmissionIgnoreReason,
ClusterAdmissionRejectReason, ClusterCacheCounters, ClusterCandidate, ClusterClock,
ClusterComponent, ClusterComponentError, ClusterControlPlane, ClusterDiagnostics,
ClusterDiscovery, ClusterDiscoveryDiagnostics, ClusterDiscoveryEvent, ClusterEndpoints,
ClusterEpoch, ClusterFillCounters, ClusterGeneration, ClusterHealthReason, ClusterHealthState,
ClusterLifecycleComponent, ClusterLifecycleDiagnostics, ClusterLifecycleStatus,
ClusterLoadReport, ClusterMember, ClusterMembershipEvent, ClusterMembershipRecvError,
ClusterMembershipSubscriber, ClusterNode, ClusterNodeConfig, ClusterNodeId, ClusterNodeMessage,
ClusterOwnershipDecision, ClusterOwnershipDiagnostics, ClusterOwnershipResolver,
ClusterPeerFetch, ClusterPeerFetchDiagnostics, ClusterPeerFetchGenerationMismatch,
ClusterPeerFetchRequest, ClusterPeerFetchResponse, ClusterPilotReadiness, ClusterPilotReport,
ClusterReplicaConfigError, ClusterRole, ClusterStagingCounters, ClusterStagingHealth,
ClusterStorage, HydraCacheClientBuilder, HydraCacheMemberBuilder, InMemoryCluster,
InMemoryClusterDiscovery, InMemoryClusterStorage, InMemoryPeerFetch, LogicalDuration,
LogicalTime, ManualClusterClock, MetaDataContainer, NearCacheRepairAction,
OutboundClusterMessage, PartitionId, RaftMetadataCommand, RaftMetadataSnapshot,
RaftStyleMetadataControlPlane, RendezvousClusterOwnership, RoutingMode, StorageOp,
StorageOpKind, StorageResult, TopologyFence, TransportPosture,
CLUSTER_PEER_FETCH_BASE_URL_METADATA_KEY,
};
pub use consistency::{
ConsistencyInvalidate, ConsistencyMode, ConsistencyOutcome, ConsistencyToken, DegradeReason,
WriteBarrierToken,
};
pub use events::{CacheEventListenerHandle, CacheEventRecvError, CacheEventSubscriber};
pub use grid::active_active::{
choose_hlc_tiebreak, ActiveActiveAcknowledgement, ActiveActiveConfig, ActiveActiveConfigError,
ActiveActiveState, GeoWrite, GeoWriteAck, HybridLogicalClock, WriteAuthority,
};
pub use grid::capacity::{
admit_autoscaler_intent, evaluate_capacity, scale_in_removal_allowed,
scale_out_counts_toward_quorum, AutoscalerAdmission, AutoscalerAdmissionPolicy,
AutoscalerIntent, AutoscalerIntentError, CapacityAutoscalerMetrics, CapacitySample,
CapacitySignal, CapacityThresholds, ScaleAction, ScaleRecommendation,
};
pub use grid::causal_consistency::{
apply_causal_write, causal_apply, AppliedSet, ApplyDecision, CausalApplyDeferred,
CausalConsistencyMetrics, CausalDependencyMissing, CausalSummary, CausalWrite,
};
pub use grid::conditional::{
CasResult, ConditionalError, ConditionalMetrics, FenceToken, SingleKeyConditionalStore,
};
pub use grid::consistency_level::{
AckRequirement, ConsistencyLevel, ConsistencyReadiness, ConsistencyUnsatisfiable, ReadOptions,
WriteOptions,
};
pub use grid::convergence_staleness::{
converge_replicated_values, resolve_session_read_mode, within_staleness_bound,
BoundedStalenessMetrics, SessionReadMode, StalenessBound, StalenessDecision,
StalenessEscalationReason,
};
pub use grid::crdt::{
tombstone_crdt_decision, ConflictFreeValue, CrdtMergeStats, GCounter, LwwRegister, OrSet,
OrSetTag, PnCounter, TombstoneCrdtDecision,
};
pub use grid::elasticity::{
hedge_winner, plan_hedged_read, restore_topology_from_snapshot, topology_from_member_metadata,
validate_move_preserves_zone_quorum, AtomicInvalidationError, AutoRepairDecision,
AutoRepairPolicy, BatchInvalidationState, CompatVersion, ControlPlaneSnapshot, HedgePolicy,
HedgedReadPlan, InMemorySnapshotSink, InvalidateBatch, InvalidationSaga, InvalidationTarget,
MovePhase, NodeTopology, PartitionMove, RegionId, RepairAction, RepairMode, ReplicaObservation,
ReplicaScorer, ReplicaSelection, ReshardPlan, ReshardPlanError, SnapshotError, SnapshotSink,
TieredValueStore, TopologyAuthority, UpgradeGuard, UpgradeGuardError, UpgradeStep,
ZoneAwareReplicaSet, ZoneAwareReplicationStrategy, ZoneId, ZonePlacementReadiness,
CONTROL_PLANE_SNAPSHOT_FORMAT_VERSION, NODE_TOPOLOGY_REGION_METADATA_KEY,
NODE_TOPOLOGY_ZONE_METADATA_KEY,
};
pub use grid::failure_detector::{
liveness_allows_ownership_change, liveness_allows_repair_or_handoff, FailureDetectorMetrics,
Liveness, PhiAccrualConfig, PhiAccrualDetector,
};
pub use grid::hardening::{
anti_entropy_repair, live_read_your_writes, merge_split_brain_records, quorum_read_your_writes,
resolve_live_split_brain, split_brain_winner, AdaptiveWindow, ChecksummedReplicatedValueRecord,
ClusterMergeOutcome, DiscardLoser, HigherVersionWins, InMemoryReplicatedValueStore,
LiveReadYourWritesDecision, LiveReplicationPeer, LiveReplicationSend, LiveSplitBrainResolution,
MergePolicy, PromotionFreezeWindow, PutIfAbsent, QuorumPosture, QuorumReadDecision,
ReadConsistency, ReplicatedValueRecord, ReplicatedValueStore, ScrubError, ScrubErrorKind,
ScrubReport, Scrubber, SealedBytes, SplitBrainReport, ValueStoreError, ValueVersion,
WriteWatermark, REPLICATED_VALUE_RECORD_CHECKSUM_FORMAT_VERSION,
REPLICATED_VALUE_RECORD_FORMAT_VERSION,
};
pub use grid::hinted_handoff::{
apply_hint, replay_hints, Hint, HintBudget, HintError, HintMetrics, HintOutcome,
HintReplayDecision, HintStore, InMemoryHintStore,
};
pub use grid::invalidation_ring::{
InvalidationEvent, InvalidationRing, InvalidationRingMetrics, InvalidationRingSnapshot,
ReplayResult,
};
pub use grid::merkle_repair::{
foreground_read_repair, ForegroundReadRepairOutcome, KeyRange, MerkleTree, RepairKind,
RepairReport, RepairSession, RepairToken,
};
pub use grid::region_failover::{
promote_region_home, rejoining_region_authority, RegionFailoverError, RegionFailoverMetrics,
RegionObservation, RegionPromotion, RegionPromotionReport, RegionRestore, RegionRestoreError,
RegionRestoreOutcome, RegionRestoreReport, RegionState, RegionStateDetector,
RejoiningRegionDecision,
};
pub use grid::region_link::{
anti_entropy_diff, CrdtMetadataGcGate, GeoBatch, GeoBatchApplyReport, IdempotencyKey,
PartitionDigest, RegionLink, RegionLinkError, VersionSummary,
};
pub use grid::session_context::{
PartitionKey, SessionContextMetrics, SessionId, SessionRequest, SessionToken,
SessionTokenError, SessionWatermark, VersionStamp,
};
pub use grid::session_lifecycle::{
rebuild_expired_sessionless, recover_session_after_failover, validate_session_lifecycle,
SessionFailoverAction, SessionFailoverRecovery, SessionLifecycleDecision, SessionTtl,
};
pub use grid::session_monotonic::{
apply_monotonic_read, apply_monotonic_write, resolve_monotonic_read, resolve_monotonic_write,
MonotonicReadDecision, MonotonicReadViolation, MonotonicWriteDecision, MonotonicWriteViolation,
SessionMonotonicMetrics, SessionSequence, SessionWriteStamp,
};
pub use grid::session_ryw::{
resolve_session_read, serve_session_read, ReadEscalation, SessionGuaranteeUnmet,
SessionReadBudget, SessionRywMetrics,
};
pub use grid::{
cluster_grid_metric_descriptors, diff_effective_maps, prepare_replicated_payload,
replicated_slot_version, select_backup_promotion, AntiEntropyTask, BackupPromotion,
ClusterGridCounters, ClusterGridDiagnostics, ClusterMetricDescriptor,
ClusterReplicationStrategy, EffectiveReplicationMap, HotCacheDirectory,
PartitionReplicaVersions, PromotionPhase, RebalancePlan, RebalanceTask, RebalanceTaskAck,
RedactReplicatedValue, RepairingTask, Replicas, ReplicatedSlot, ReplicatedValueSecurityPosture,
Replication, ReplicationConfig, ReplicationConfigError, ReplicationCryptoError,
ReplicationKeyProvider, ReplicationPayload, SharedReplicationKeyProvider, TombstoneAdmission,
TombstoneBudget, TombstoneTracker,
};
pub use hydracache_core::{
CacheDiagnostics, CacheError, CacheEvent, CacheEventKind, CacheEventOptions, CacheEventOrigin,
CacheEventScope, CacheEventValueMode, CacheKey, CacheKeyBuilder, CacheOptions, CacheStats,
PostcardCodec, TagSet,
};
pub use hydracache_macros::{cacheable, cacheable_infallible, cacheable_loader};
pub use invalidation_bus::{
CacheInvalidation, CacheInvalidationBus, CacheInvalidationFrame, CacheInvalidationMessage,
CacheInvalidationReceive, CacheInvalidationReceiver, InMemoryFramedInvalidationBus,
InMemoryInvalidationBus, CACHE_INVALIDATION_FRAME_VERSION,
};
pub use refresh::RefreshOptions;
pub use security::{
AtRestKeyProvider, AtRestSealer, CertificateBundle, CertificateRotationWindow, KeyMaterial,
SealedArtifact, SecurityError, StaticAtRestKeyProvider, AT_REST_ARTIFACT_FORMAT_VERSION,
};
pub use typed::TypedCache;
pub use hydracache_core::{
CacheDiagnostics as Diagnostics, CacheOptions as Options, CacheStats as Stats,
Result as CacheResult,
};
#[cfg(test)]
mod tests;