MARS documentation
Rust librariesmars-shard

mars-shard · cross_shard

Public declarations and documentation for mars-shard::cross_shard.

Prototype / draft — separate from production registry operations.

Package: mars-shard · Workspace version: 0.1.0 · Module: cross_shard

Status: prototype / draft. This is not the production registry topology.

This reference follows declared modules and public syntax, including public implementation methods. Function bodies and constant values are omitted. Feature conditions are retained. Private-module re-exports and trait resolution require the compiler; not every declaration is a root import.

cross_shard::CrossShardQuery

A query that must be executed across multiple shards.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CrossShardQuery {
/// Unique query ID for correlation.

pub query_id: String,
/// Shard IDs that must be queried.

pub target_shards: Vec<String>,
/// The MARS-QL query string.

pub query: String,
/// Per-shard timeout in milliseconds.

pub timeout_ms: u64
}

Source line: 21.

cross_shard::ShardPartialResult

Partial result from a single shard.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ShardPartialResult {
/// The shard that produced this result.

pub shard_id: String,
/// Whether the shard responded successfully.

pub success: bool,
/// Matching entry IDs from this shard.

pub entry_ids: Vec<String>,
/// Optional error message on failure.

#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>
}

Source line: 39.

cross_shard::CrossShardResult

Aggregated result from a cross-shard scatter/gather query.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CrossShardResult {
/// The original query ID.

pub query_id: String,
/// Per-shard partial results.

pub shard_results: Vec<ShardPartialResult>,
/// Merged entry IDs across all successful shards.

pub merged_entry_ids: Vec<String>,
/// Number of shards that responded successfully.

pub success_count: usize,
/// Number of shards that failed.

pub failure_count: usize
}

Source line: 58.

cross_shard::scatter_query

Scatter a cross-shard query into per-shard work items.

Returns a list of (shard_id, query_string) pairs that the coordinator should dispatch to individual shard workers.

pub fn scatter_query(query: &CrossShardQuery) -> Vec<(String, String)>;

Source line: 79.

cross_shard::gather_results

Gather partial results from shard workers into a unified cross-shard result.

Merges all successful entry IDs and tallies success/failure counts.

pub fn gather_results(query_id: &str, partials: Vec<ShardPartialResult>) -> CrossShardResult;

Source line: 90.

cross_shard::TransferState

State machine for an atomic cross-shard entry transfer.

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TransferState {
    /// Transfer has been initiated; no locks yet.
    Initiated,
    /// The entry is locked on the source shard (preventing mutations).
    SourceLocked,
    /// The entry has been written to the target shard.
    TargetWritten,
    /// The entry has been deleted from the source shard.
    SourceDeleted,
    /// Transfer completed successfully.
    Complete,
    /// Transfer was rolled back after a failure.
    RolledBack,
}

Source line: 123.

cross_shard::CrossShardTransfer

Tracks an atomic entry transfer between two shards.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CrossShardTransfer {
/// Unique transfer ID.

pub transfer_id: String,
/// The entry being transferred.

pub entry_id: String,
/// Source shard ID.

pub source_shard: String,
/// Target shard ID.

pub target_shard: String,
/// Current state of the transfer.

pub state: TransferState,
/// When the transfer was initiated.

pub initiated_at: chrono::DateTime<chrono::Utc>,
/// When the transfer completed or was rolled back.

#[serde(skip_serializing_if = "Option::is_none")]
pub finished_at: Option<chrono::DateTime<chrono::Utc>>
}

Source line: 145.

cross_shard::AtomicTransfer

Manages atomic cross-shard entry transfers.

Implements a two-phase state machine: Initiated -&gt; SourceLocked -&gt; TargetWritten -&gt; SourceDeleted -&gt; Complete

Any state before SourceDeleted can be rolled back.

pub struct AtomicTransfer {

}

Source line: 173.

cross_shard::AtomicTransfer::new

Create a new atomic transfer manager.

pub fn new() -> Self;

Source line: 180.

cross_shard::AtomicTransfer::initiate

Initiate a new cross-shard transfer.

pub fn initiate(
        &mut self,
        entry_id: &str,
        source_shard: &str,
        target_shard: &str,
    ) -> Result<CrossShardTransfer, ShardError>;

Source line: 188.

cross_shard::AtomicTransfer::advance

Advance a transfer to the next state.

Valid transitions:

  • Initiated -&gt; SourceLocked
  • SourceLocked -&gt; TargetWritten
  • TargetWritten -&gt; SourceDeleted
  • SourceDeleted -&gt; Complete
pub fn advance(&mut self, transfer_id: &str) -> Result<&CrossShardTransfer, ShardError>;

Source line: 250.

cross_shard::AtomicTransfer::rollback

Roll back a transfer.

Only possible from Initiated, SourceLocked, or TargetWritten. Once SourceDeleted is reached, rollback is not safe.

pub fn rollback(&mut self, transfer_id: &str) -> Result<&CrossShardTransfer, ShardError>;

Source line: 284.

cross_shard::AtomicTransfer::get

Get a transfer by ID.

pub fn get(&self, transfer_id: &str) -> Option<&CrossShardTransfer>;

Source line: 310.

cross_shard::AtomicTransfer::in_flight

List all in-flight transfers (not complete, not rolled back).

pub fn in_flight(&self) -> Vec<&CrossShardTransfer>;

Source line: 315.

cross_shard::AtomicTransfer::all_transfers

List all transfers.

pub fn all_transfers(&self) -> Vec<&CrossShardTransfer>;

Source line: 323.

Source provenance

Source: mars-shard/src/cross_shard.rs · SHA-256 a3c33ae417daed2d3670c3774518c74ed6c6dbf725a3f224fcee23f27d3e5783. Package overview.

On this page