pub struct ProcessLeaseStore { /* private fields */ }Expand description
Append-only object-store authority for one stable node identity.
Implementations§
Source§impl ProcessLeaseStore
impl ProcessLeaseStore
Sourcepub fn new(store: Arc<dyn ObjectStore>, node: NodeId, ttl_ms: i64) -> Self
pub fn new(store: Arc<dyn ObjectStore>, node: NodeId, ttl_ms: i64) -> Self
Create an authority for node.
Sourcepub async fn load(&self) -> Result<Option<ProcessLease>, ProcessLeaseError>
pub async fn load(&self) -> Result<Option<ProcessLease>, ProcessLeaseError>
Load the highest durable sequence.
§Errors
Fails on object-store I/O, malformed JSON, or a record in the wrong node namespace.
Sourcepub async fn try_acquire(
&self,
owner: Uuid,
now_ms: i64,
) -> Result<ProcessLeaseOutcome, ProcessLeaseError>
pub async fn try_acquire( &self, owner: Uuid, now_ms: i64, ) -> Result<ProcessLeaseOutcome, ProcessLeaseError>
Acquire or renew this stable node identity for owner at now_ms.
§Errors
Fails closed on object-store I/O or an invalid durable record.
Sourcepub fn observe_rival(
&self,
lease: &ProcessLease,
) -> Result<ProcessLeaseObservation, ProcessLeaseError>
pub fn observe_rival( &self, lease: &ProcessLease, ) -> Result<ProcessLeaseObservation, ProcessLeaseError>
Start a candidate-local monotonic observation of a rival lease.
§Errors
Rejects a malformed record or one from another node namespace.
Sourcepub async fn try_takeover(
&self,
owner: Uuid,
observation: &ProcessLeaseObservation,
now_ms: i64,
) -> Result<ProcessLeaseOutcome, ProcessLeaseError>
pub async fn try_takeover( &self, owner: Uuid, observation: &ProcessLeaseObservation, now_ms: i64, ) -> Result<ProcessLeaseOutcome, ProcessLeaseError>
Attempt takeover after the same sequence and owner have been observed unchanged for a full TTL on this candidate’s monotonic clock.
§Errors
Fails closed on early observation, object-store I/O, or malformed durable state.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ProcessLeaseStore
impl !RefUnwindSafe for ProcessLeaseStore
impl !UnwindSafe for ProcessLeaseStore
impl Send for ProcessLeaseStore
impl Sync for ProcessLeaseStore
impl Unpin for ProcessLeaseStore
impl UnsafeUnpin for ProcessLeaseStore
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
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].§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.