Struct Reclaiming

Source
struct Reclaiming {
    heap: BinaryHeap<Reverse<(Age, AId)>>,
    enabled: EnabledToken,
}
Expand description

State while reclamation is active

Fields§

§heap: BinaryHeap<Reverse<(Age, AId)>>

The heap of candidates, oldest at top of heap

§enabled: EnabledToken

Make this type uninhabited if memory tracking is compiled out

Implementations§

Source§

impl Reclaiming

Source

fn maybe_start(state: &mut GuardWithDeferredDrop<'_>) -> Option<Self>

Check to see if we should start reclaiming, and if so return a Reclaiming

  1. Checks to see if usage is above max; if not, returns None
  2. Logs that we’re starting reclamation
  3. Calculates the heap of data ages
Source

fn choose_victims( &mut self, state: &mut State, ) -> Result<Option<Vec<(AId, ProtectedArc<dyn IsParticipant>)>>, ReclaimCrashed>

If we’re reclaiming, choose the next victim(s) to reclaim

This is the account whose participant has the oldest data age, and all of that account’s children.

We might discover that we didn’t want to continue reclamation after all: this function is responsible for checking our progress against the low water mark.

If reclamation should stop, this function logs, and returns None.

Source

async fn notify_victims( &mut self, victims: Vec<(AId, ProtectedArc<dyn IsParticipant>)>, ) -> Vec<(AId, Result<Reclaimed, VictimPanicked>)>

Notify the chosen victims and obtain their responses

This is the async part, and is done with the state unlocked.

Source

fn handle_victim_responses( &mut self, state: &mut State, responses: Vec<(AId, Result<Reclaimed, VictimPanicked>)>, )

Process the victim’s responses and update state accordingly

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,