Skip to main content

ForkPlan

Struct ForkPlan 

Source
pub struct ForkPlan { /* private fields */ }
Expand description

A planned fork of an origin run: the boundary, the prefix to copy, and the write hazard set in the segment the fork will re-walk.

Produced by plan_fork from a read-only view of the origin log. It borrows nothing from the origin afterward: the prefix envelopes are cloned, so the caller can build the child (build_child_prefix) without holding the origin log open.

Implementations§

Source§

impl ForkPlan

Source

pub fn origin_run(&self) -> RunId

The run this fork descends from.

Source

pub fn graph_hash(&self) -> &str

The origin’s recorded graph hash, which the fork reuses unchanged.

Source

pub fn from_node(&self) -> &str

The node the fork restarts execution from.

Source

pub fn through_seq(&self) -> SequenceNumber

The boundary the prefix was taken through: the highest seq the prefix carries, one below the restart node’s Event::NodeEntered. Recorded in ForkOrigin::through_seq. The restart node’s entry is always at least seq 1 (seq 0 is the head), so this never underflows.

Source

pub fn prefix_len(&self) -> usize

How many events the child’s prefix holds (the origin events with seq < boundary).

Source

pub fn hazards(&self) -> &[WriteHazard]

The Effect::Write intents the fork’s re-walked segment would re-execute, in origin log order. Empty when the fork boundary sat before any write intent, which is the no-acknowledgement-needed case.

Source

pub fn hazard_seqs(&self) -> Vec<u64>

The origin log positions of every hazard write, sorted ascending: the set an acknowledgement must cover, and the value recorded into ForkOrigin::acknowledged_writes when the fork proceeds.

Source

pub fn build_child_prefix( &self, child: RunId, acknowledged_writes: Vec<u64>, ) -> Vec<EventEnvelope>

Builds the child’s log prefix: the origin’s [0, boundary) events rewritten under child, with the seq-0 Event::GraphRunStarted carrying forked_from. Every other field of every envelope — seq, schema_version, recorded_at, and the payload — is copied verbatim, so the child’s prefix is byte-identical to the origin’s modulo the run id and that one seq-0 field. acknowledged_writes is recorded verbatim into the ForkOrigin.

Trait Implementations§

Source§

impl Debug for ForkPlan

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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