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.
12//! - [`engine_in_memory`]: `InMemoryGroupEngine`, the hot-ring reference engine
13//!   used by tests and the `--raft-memory` cluster mode.
14//! - [`engine_wal`]: `WalGroupEngine`, the durable file-backed engine.
15//! - [`runtime`]: `ShardRuntime`, `RuntimeConfig`, and per-core worker spawn.
16//! - [`core_worker`]: single-thread actor that owns groups for one core.
17//! - [`group_actor`]: per-group mailbox actor running inside a core worker.
18//! - [`metrics`]: runtime metrics shared across cores; lock-free counters.
19
20mod cold_store;
21mod command;
22mod core_worker;
23mod engine;
24mod engine_in_memory;
25mod engine_wal;
26mod error;
27mod group_actor;
28mod metrics;
29mod request;
30mod runtime;
31
32pub use cold_store::{ColdStore, ColdStoreHandle, new_cold_chunk_path, new_external_payload_path};
33pub use command::{GroupSnapshot, GroupWriteCommand};
34pub use engine::{
35    GroupAppendBatchFuture, GroupAppendBatchResponse, GroupAppendFuture,
36    GroupBootstrapStreamFuture, GroupCloseStreamFuture, GroupColdHotBacklogFuture,
37    GroupCreateStreamFuture, GroupDeleteSnapshotFuture, GroupDeleteStreamFuture, GroupEngine,
38    GroupEngineCreateFuture, GroupEngineError, GroupEngineFactory, GroupEngineMetrics,
39    GroupFlushColdFuture, GroupForkRefFuture, GroupHeadStreamFuture, GroupInstallSnapshotFuture,
40    GroupLeaderHint, GroupPlanColdFlushFuture, GroupPlanNextColdFlushBatchFuture,
41    GroupPlanNextColdFlushFuture, GroupPublishSnapshotFuture, GroupReadSnapshotFuture,
42    GroupReadStreamFuture, GroupReadStreamPartsFuture, GroupRequireLiveReadOwnerFuture,
43    GroupSnapshotFuture, GroupTouchStreamAccessFuture, GroupWriteBatchFuture, GroupWriteResponse,
44};
45pub use engine_in_memory::{InMemoryGroupEngine, InMemoryGroupEngineFactory};
46pub use engine_wal::{WalGroupEngine, WalGroupEngineFactory};
47pub use error::RuntimeError;
48pub use metrics::{RuntimeMailboxSnapshot, RuntimeMetrics, RuntimeMetricsSnapshot};
49pub use request::{
50    AppendBatchRequest, AppendBatchResponse, AppendExternalRequest, AppendRequest, AppendResponse,
51    BootstrapStreamRequest, BootstrapStreamResponse, BootstrapUpdate, CloseStreamRequest,
52    CloseStreamResponse, ColdHotBacklog, ColdWriteAdmission, CreateStreamExternalRequest,
53    CreateStreamRequest, CreateStreamResponse, DeleteSnapshotRequest, DeleteStreamRequest,
54    DeleteStreamResponse, FlushColdRequest, FlushColdResponse, ForkRefResponse,
55    GroupReadStreamBody, GroupReadStreamParts, HeadStreamRequest, HeadStreamResponse,
56    PlanColdFlushRequest, PlanGroupColdFlushRequest, PublishSnapshotRequest,
57    PublishSnapshotResponse, ReadSnapshotRequest, ReadSnapshotResponse, ReadStreamRequest,
58    ReadStreamResponse, StreamAppendCount, TouchStreamAccessResponse,
59};
60pub use runtime::{RuntimeConfig, RuntimeThreading, ShardRuntime};
61
62pub use ursula_stream::{
63    ColdChunkRef, ColdFlushCandidate, ExternalPayloadRef, ProducerRequest, StreamErrorCode,
64};
65
66#[cfg(test)]
67mod tests;