Skip to main content

ursula_runtime/
lib.rs

1//! Per-core actor runtime for Ursula.
2//!
3//! Module map:
4//!
5//! - [`cold_store`]: opendal-backed cold tier handle and object path helpers.
6//! - [`request`]: HTTP/gRPC request and response value types for each engine op.
7//! - [`command`]: the replicated [`GroupWriteCommand`] and `From` conversions from
8//!   request values into the wire command consumed by `GroupEngine`.
9//! - [`error`]: runtime-level error type [`RuntimeError`].
10//! - [`engine`]: the `GroupEngine` trait, factory, metrics, and the boxed-future
11//!   type aliases that form the replaceable per-group engine boundary, plus the
12//!   in-memory and WAL implementations under [`engine::in_memory`] and
13//!   [`engine::wal`].
14//! - [`runtime`]: `ShardRuntime`, `RuntimeConfig`, and per-core worker spawn.
15//! - [`core_worker`]: single-thread actor that owns groups for one core.
16//! - [`group_actor`]: per-group mailbox actor running inside a core worker.
17//! - [`metrics`]: runtime metrics shared across cores; lock-free counters.
18
19mod admission;
20pub mod cold_index;
21mod cold_store;
22mod command;
23mod core_worker;
24mod engine;
25mod error;
26mod group_actor;
27mod metrics;
28mod request;
29mod rt;
30mod runtime;
31mod snapshot_store;
32mod trace;
33
34pub use admission::RaftUncommittedAdmission;
35pub use cold_index::ColdIndexPage;
36pub use cold_index::ColdIndexPageCache;
37pub use cold_index::ColdIndexPageKey;
38pub use cold_index::ColdIndexPageStore;
39pub use cold_index::ColdStoreColdIndexPageStore;
40pub use cold_index::InMemoryColdIndexPageStore;
41pub use cold_index::cold_index_prefix;
42pub use cold_index::write_cold_chunk_index_pages;
43pub use cold_index::write_external_segment_index_pages;
44pub use cold_store::ColdReadCacheConfig;
45pub use cold_store::ColdStore;
46pub use cold_store::ColdStoreEvent;
47pub use cold_store::ColdStoreFault;
48pub use cold_store::ColdStoreFaultContext;
49pub use cold_store::ColdStoreFaultEffect;
50pub use cold_store::ColdStoreHandle;
51pub use cold_store::ColdStoreInfo;
52pub use cold_store::ColdStoreOperation;
53pub use cold_store::new_cold_chunk_path;
54pub use cold_store::new_external_payload_path;
55pub use command::GroupSnapshot;
56pub use command::GroupWriteCommand;
57pub use engine::GroupAckColdGcFuture;
58pub use engine::GroupAppendBatchFuture;
59pub use engine::GroupAppendBatchResponse;
60pub use engine::GroupAppendFuture;
61pub use engine::GroupBootstrapStreamFuture;
62pub use engine::GroupCloseStreamFuture;
63pub use engine::GroupColdHotBacklogFuture;
64pub use engine::GroupCreateStreamFuture;
65pub use engine::GroupDeleteSnapshotFuture;
66pub use engine::GroupDeleteStreamFuture;
67pub use engine::GroupEngine;
68pub use engine::GroupEngineCreateFuture;
69pub use engine::GroupEngineError;
70pub use engine::GroupEngineFactory;
71pub use engine::GroupEngineMetrics;
72pub use engine::GroupFlushColdFuture;
73pub use engine::GroupForkRefFuture;
74pub use engine::GroupHeadStreamFuture;
75pub use engine::GroupInfraError;
76pub use engine::GroupInstallSnapshotFuture;
77pub use engine::GroupLeaderHint;
78pub use engine::GroupPlanColdFlushFuture;
79pub use engine::GroupPlanColdGcFuture;
80pub use engine::GroupPlanNextColdFlushBatchFuture;
81pub use engine::GroupPlanNextColdFlushFuture;
82pub use engine::GroupPublishSnapshotFuture;
83pub use engine::GroupReadSnapshotFuture;
84pub use engine::GroupReadStreamFuture;
85pub use engine::GroupReadStreamPartsFuture;
86pub use engine::GroupRequireLiveReadOwnerFuture;
87pub use engine::GroupShutdownFuture;
88pub use engine::GroupSnapshotFuture;
89pub use engine::GroupTouchStreamAccessFuture;
90pub use engine::GroupWriteBatchFuture;
91pub use engine::GroupWriteResponse;
92pub use engine::in_memory::InMemoryGroupEngine;
93pub use engine::in_memory::InMemoryGroupEngineFactory;
94pub use engine::wal::WalGroupEngine;
95pub use engine::wal::WalGroupEngineFactory;
96pub use error::ErrorStatus;
97pub use error::RuntimeError;
98pub use metrics::RuntimeMailboxSnapshot;
99pub use metrics::RuntimeMetrics;
100pub use metrics::RuntimeMetricsSnapshot;
101pub use request::AckColdGcResponse;
102pub use request::AppendBatchRequest;
103pub use request::AppendBatchResponse;
104pub use request::AppendExternalRequest;
105pub use request::AppendRequest;
106pub use request::AppendResponse;
107pub use request::BootstrapStreamRequest;
108pub use request::BootstrapStreamResponse;
109pub use request::BootstrapUpdate;
110pub use request::CloseStreamRequest;
111pub use request::CloseStreamResponse;
112pub use request::ColdHotBacklog;
113pub use request::ColdWriteAdmission;
114pub use request::CreateStreamExternalRequest;
115pub use request::CreateStreamRequest;
116pub use request::CreateStreamResponse;
117pub use request::DeleteSnapshotRequest;
118pub use request::DeleteStreamRequest;
119pub use request::DeleteStreamResponse;
120pub use request::FlushColdRequest;
121pub use request::FlushColdResponse;
122pub use request::ForkRefResponse;
123pub use request::GroupReadStreamBody;
124pub use request::GroupReadStreamParts;
125pub use request::HeadStreamRequest;
126pub use request::HeadStreamResponse;
127pub use request::PlanColdFlushRequest;
128pub use request::PlanGroupColdFlushRequest;
129pub use request::PublishSnapshotRequest;
130pub use request::PublishSnapshotResponse;
131pub use request::ReadSnapshotRequest;
132pub use request::ReadSnapshotResponse;
133pub use request::ReadStreamRequest;
134pub use request::ReadStreamResponse;
135pub use request::StreamAppendCount;
136pub use request::TouchStreamAccessResponse;
137pub use runtime::RuntimeConfig;
138pub use runtime::RuntimeThreading;
139pub use runtime::ShardRuntime;
140pub use snapshot_store::InlineSnapshotStore;
141#[cfg(not(madsim))]
142pub use snapshot_store::LocalSnapshotStore;
143#[cfg(not(madsim))]
144pub use snapshot_store::S3SnapshotStore;
145pub use snapshot_store::SharedSnapshotStore;
146pub use snapshot_store::SnapshotKey;
147pub use snapshot_store::SnapshotLocation;
148pub use snapshot_store::SnapshotPointer;
149pub use snapshot_store::SnapshotStore;
150pub use snapshot_store::SnapshotStoreError;
151pub use snapshot_store::SnapshotStoreFuture;
152pub use snapshot_store::default_snapshot_store;
153pub use snapshot_store::snapshot_store_from_env;
154pub use ursula_stream::ColdChunkRef;
155pub use ursula_stream::ColdFlushCandidate;
156pub use ursula_stream::ColdGcEntry;
157pub use ursula_stream::ColdGcTarget;
158pub use ursula_stream::ExternalPayloadRef;
159pub use ursula_stream::ProducerRequest;
160pub use ursula_stream::StreamErrorCode;
161pub use ursula_stream::StreamErrorContext;
162pub use ursula_stream::StreamIntegritySnapshot;
163
164#[cfg(test)]
165mod tests;