Skip to main content

MaterializingWorkspaceMultiRootPublisher

Struct MaterializingWorkspaceMultiRootPublisher 

Source
pub struct MaterializingWorkspaceMultiRootPublisher<A, O, R, M> { /* private fields */ }
Expand description

Workspace publisher composed with an injected physical materializer.

Logical publication happens first under the durable all-roots decision. If materialization is interrupted, retry discovers the exact generation from the workspace idempotency record and resumes the same materializer.

Implementations§

Source§

impl<A, O, R, M> MaterializingWorkspaceMultiRootPublisher<A, O, R, M>

Source

pub fn new(resolver: R, materializer: M) -> Self

Creates one composed logical and physical publisher.

Source

pub fn with_merge_drivers(self, registry: Arc<MergeDriverRegistry>) -> Self

Uses one immutable-input driver registry for conflict resolution.

Source

pub fn with_root_merge_drivers( self, root_id: WorkspaceRootId, registry: Arc<MergeDriverRegistry>, ) -> Self

Overrides merge-driver selection for one root in a multi-root plan.

Trait Implementations§

Source§

impl<A, O, R, M> MultiRootPublisher for MaterializingWorkspaceMultiRootPublisher<A, O, R, M>

Source§

type Error = MaterializingWorkspaceMultiRootPublisherError<<R as WorkspaceResolver<A, O>>::Error, <M as MultiRootMaterializer<A, O>>::Error>

Publisher error.
Source§

async fn prepare( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, resolutions: &BTreeMap<ConflictKey, MergeResolution>, ) -> Result<MultiRootPrepare, Self::Error>

Atomically validates and reserves the exact pinned target. Repeating this call for one operation must return the same live reservation.
Source§

async fn release( &self, operation_id: OperationId, root_id: WorkspaceRootId, fence: &MultiRootFence, ) -> Result<(), Self::Error>

Releases a reservation when validation fails before a commit decision.
Source§

async fn project_conflict( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, conflict: Option<&MergePlan>, ) -> Result<GenerationId, Self::Error>

Projects one root into its durable conflicted working state.
Source§

async fn abort_conflict( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, projected_generation: GenerationId, ) -> Result<GenerationId, Self::Error>

Restores one projected root to its exact pre-merge generation.
Source§

async fn declare_conflicts( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, conflict: &MergePlan, paths: &[String], ) -> Result<BTreeSet<ConflictKey>, Self::Error>

Validates explicitly staged conflict paths and returns their exact keys.
Source§

async fn finish_conflict( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, projected_generation: GenerationId, ) -> Result<MultiRootConflictFinish, Self::Error>

Captures the current resolved working generation during continue.
Source§

async fn publish( &self, operation_id: OperationId, root_id: WorkspaceRootId, root: &MultiRootMergeRoot, resolutions: &BTreeMap<ConflictKey, MergeResolution>, fence: &MultiRootFence, ) -> Result<MultiRootPublishRoot, Self::Error>

Idempotently rolls one root forward after the durable commit decision.
Source§

async fn finalize( &self, operation_id: OperationId, root_id: WorkspaceRootId, _root: &MultiRootMergeRoot, ) -> Result<(), Self::Error>

Reclaims terminal per-root recovery state after the all-roots Applied decision is durable. It must be idempotent because restart recovery retries cleanup independently of logical publication.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> StorageFuture for T
where T: Send,

Source§

impl<T> StorageProvider for T
where T: Send + Sync + ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more