pub struct PendingSyncs { /* private fields */ }Expand description
Coordinates durability operations for a DelayedSyncContext or DelayedSyncBlob.
Every started sync parks in a deferred queue (in start order) until a test releases it or Self::unblock runs. Self::arm additionally installs a one-shot gate that blocks the next durability operation and counts operations from that point on (Self::calls). The gate is pushed onto the deferred queue when Self::arm is called, before any operation reaches it.
Implementations§
Source§impl PendingSyncs
impl PendingSyncs
Sourcepub fn lock(&self) -> MappedMutexGuard<'_, Vec<DeferredSync>>
pub fn lock(&self) -> MappedMutexGuard<'_, Vec<DeferredSync>>
Locks the deferred sync queue.
Sourcepub fn arm(&self)
pub fn arm(&self)
Begins counting durability operations and blocks the next one behind a one-shot gate (pushed onto the deferred queue so tests can release it).
Once the gate is consumed, started syncs park in the deferred queue as usual while Self::calls keeps counting.
Sourcepub fn calls(&self) -> usize
pub fn calls(&self) -> usize
Returns the number of durability operations observed since Self::arm.
Sourcepub fn unblock(&self)
pub fn unblock(&self)
Releases every parked sync and permanently stops parking new ones: future started syncs proceed immediately (or fail, after Self::arm_fail). Unlike release_pending_syncs, which drains the queue once, this is sticky. A gate armed via Self::arm parks in the same queue, so this releases it too.
Sourcepub fn arm_fail(&self)
pub fn arm_fail(&self)
Arms every parked and future started sync to resolve to an injected error once released via Self::unblock. The release helpers send explicit results and ignore this.
Sourcepub fn entered(&self) -> usize
pub fn entered(&self) -> usize
Number of started syncs whose completion futures have begun executing, parked or not.
Sourcepub fn completions(&self) -> usize
pub fn completions(&self) -> usize
Number of started syncs that completed durably.
Trait Implementations§
Source§impl Clone for PendingSyncs
impl Clone for PendingSyncs
Source§fn clone(&self) -> PendingSyncs
fn clone(&self) -> PendingSyncs
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for PendingSyncs
impl Default for PendingSyncs
Source§fn default() -> PendingSyncs
fn default() -> PendingSyncs
Auto Trait Implementations§
impl !RefUnwindSafe for PendingSyncs
impl !UnwindSafe for PendingSyncs
impl Freeze for PendingSyncs
impl Send for PendingSyncs
impl Sync for PendingSyncs
impl Unpin for PendingSyncs
impl UnsafeUnpin for PendingSyncs
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> ⓘ
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> ⓘ
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