Skip to main content

StreamAuthorityStore

Struct StreamAuthorityStore 

Source
pub struct StreamAuthorityStore<P> { /* private fields */ }
Expand description

Filesystem authority over native hierarchical Streams.

Records, writer epochs, and lineage are child paths changed through one atomic Stream commit. Retry results come from the provider’s native idempotency authority; the adapter owns no side database or shadow operation streams.

Implementations§

Source§

impl<P> StreamAuthorityStore<P>

Source

pub fn new(provider: Arc<P>) -> Self

Binds one authenticated public Stream provider.

Source

pub fn provider(&self) -> Arc<P> ⓘ

Returns the exact public Stream provider that supplies this authority.

Higher-level protocol adapters use this only for filesystem-adjacent durable state machines, such as S3 multipart upload sessions. The filesystem authority itself remains represented by canonical Stream records and never by an adapter-local database.

Source§

impl<P: StreamProvider> StreamAuthorityStore<P>

Source

pub async fn authorities( &self, maximum: u32, ) -> Result<Vec<AuthorityId>, AuthorityStoreError>

Lists a bounded snapshot of exact filesystem authority identities.

Authorities are native direct children in Stream; no filesystem record or object is read.

Trait Implementations§

Source§

impl<P: StreamProvider> AsyncAuthorityStore for StreamAuthorityStore<P>

Source§

fn supports_generation_lineage_prefix(&self) -> bool

Whether this backend can retain an immutable published-generation lineage prefix when it creates a child authority.
Source§

async fn fork_generation_authority( &self, source: GenerationForkSource, destination_authority: AuthorityId, operation_id: OperationId, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<CreateAuthorityOutcome>

Creates a destination authority whose canonical generation lineage is either an immutable native prefix of the source or an explicit independent lineage rooted at an unpublished authenticated generation.
Source§

async fn create_authority( &self, authority_id: AuthorityId, genesis_epoch: Epoch, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<CreateAuthorityOutcome>

Asynchronously creates one authority.
Source§

async fn head( &self, authority_id: AuthorityId, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<Head>

Asynchronously reads the linearizable head.
Source§

async fn compare_and_append( &self, authority_id: AuthorityId, epoch: Epoch, expected: Head, commit: ProposedCommit, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<FsAppendOutcome>

Asynchronously compares and appends one durable operation.
Source§

async fn compare_and_append_guarded( &self, request: GuardedAppend, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<FsAppendOutcome>

Asynchronously compares and appends under an optional operation-window permit. Backends that cannot atomically evaluate lease gates reject managed permits rather than using a read-then-write approximation.
Source§

async fn reserve_publication( &self, authority_id: AuthorityId, expected: Head, operation_id: OperationId, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<ReservationOutcome>

Atomically acquires the exclusive publication gate at an exact head.
Source§

async fn release_publication( &self, reservation: PublicationReservation, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<()>

Releases an exact publication reservation. Exact retries are idempotent.
Source§

async fn replay( &self, authority_id: AuthorityId, after: Sequence, limit: ReplayLimit, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<Vec<DurableCommit>>

Asynchronously replays one bounded contiguous page.
Source§

async fn fence( &self, authority_id: AuthorityId, expected: Head, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<FenceOutcome>

Asynchronously advances a writer fence.
Source§

async fn find_operation( &self, authority_id: AuthorityId, operation_id: OperationId, budget: WorkBudget, cancellation: &CancellationToken, ) -> AuthorityResult<Option<DurableCommit>>

Asynchronously resolves one idempotent operation identity.
Source§

impl<P: Clone> Clone for StreamAuthorityStore<P>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<P> Freeze for StreamAuthorityStore<P>
where Arc<P>: Freeze,

§

impl<P> RefUnwindSafe for StreamAuthorityStore<P>
where Arc<P>: RefUnwindSafe,

§

impl<P> Send for StreamAuthorityStore<P>
where Arc<P>: Send,

§

impl<P> Sync for StreamAuthorityStore<P>
where Arc<P>: Sync,

§

impl<P> Unpin for StreamAuthorityStore<P>
where Arc<P>: Unpin,

§

impl<P> UnsafeUnpin for StreamAuthorityStore<P>
where Arc<P>: UnsafeUnpin,

§

impl<P> UnwindSafe for StreamAuthorityStore<P>
where Arc<P>: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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