Skip to main content

powdb_sync/
lib.rs

1//! Sync substrate for PowDB.
2//!
3//! This crate is intentionally below the query layer. Its first responsibility is
4//! retaining durable WAL records as immutable replication-unit segments so future
5//! embedded replicas and read replicas can bootstrap from snapshot + tail without
6//! making `powdb-query` distribution-aware.
7
8pub mod apply;
9pub mod checkpoint;
10pub mod error;
11pub mod metadata;
12pub mod replica;
13pub mod retention;
14pub mod segment;
15
16pub use apply::{
17    apply_retained_tail, apply_retained_units_chunk, seed_retained_apply_boundary,
18    validate_v1_retained_tail_applyable, validate_v1_retained_units_applyable,
19    RetainedTailApplySummary,
20};
21pub use checkpoint::{
22    archive_wal_records_for_identity, checkpoint_preserving_retained_segments_if_enabled,
23    checkpoint_with_retained_segments, open_preserving_retained_segments, retained_segments_dir,
24    SyncCatalog, RETAINED_SEGMENTS_DIR,
25};
26pub use error::SyncError;
27pub use metadata::{
28    minimum_retained_lsn, open_or_create_identity, read_identity, read_identity_snapshot,
29    read_identity_snapshot_if_exists, read_replica_cursors, register_bootstrap_cursor,
30    retire_replica_cursor, sync_state_dir, upsert_replica_cursor, write_identity_snapshot,
31    write_replica_cursors, DatabaseIdentity, IdentitySnapshot, ReplicaCursor, IDENTITY_FILE,
32    REPLICA_CURSORS_FILE, SYNC_METADATA_FORMAT_VERSION, SYNC_STATE_DIR,
33};
34pub use replica::{
35    acknowledge_replica_apply, replica_sync_status, ReplicaApplyAckSummary, ReplicaSyncStatus,
36    SyncRepairAction,
37};
38pub use retention::{
39    prune_retained_segments, prune_retained_segments_for_cursors,
40    prune_retained_segments_with_policy, RetentionGcSummary, RetentionPressurePolicy,
41    RetentionPressureSummary,
42};
43pub use segment::{
44    list_segment_files, read_segment_file, read_units_since, read_units_through,
45    retained_tail_progress, segment_file_name, validate_retained_tail_available,
46    write_segment_atomic, RetainedSegment, RetainedTailAvailability, RetainedTailProgress,
47    RetainedUnit, SegmentFile, SegmentIdentity, RETAINED_SEGMENT_FORMAT_VERSION,
48};