Skip to main content

AdmissionPolicy

Enum AdmissionPolicy 

Source
#[non_exhaustive]
pub enum AdmissionPolicy { DropIfRunning, Replace, Queue, }
Available on crate feature controller only.
Expand description

The conflict policy for one controller submission.

The policy does not change task execution settings in TaskSpec. It only controls admission to the slot.

Choose Queue when every item should be considered in FIFO order. Choose Replace when the next item should contain the newest value. Choose DropIfRunning when duplicate work may be skipped.

Match with a wildcard arm because this enum is non-exhaustive.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

DropIfRunning

Rejects new work while the slot has an owner.

The task body does not start. The current owner and existing queue stay unchanged. A watched submission resolves to TaskOutcome::Rejected with RejectionKind::SlotBusy.

§

Replace

Makes this submission the next candidate and retires the current owner.

On a busy slot, this submission creates or replaces the queue head. Repeated replacements retain only the newest head. FIFO items behind the head keep their order; Replace does not clear the entire queue.

A registered owner receives a removal request. When registry admission is still pending, the controller waits for that decision and orders removal only after acceptance. The replacement starts after registry cleanup and physical release of the owner.

Replacement has no separate wait timeout. While physical release is pending, snapshots report the slot as SlotStatusKind::Terminating.

This policy does not use ControllerConfig::max_slot_queue. Creating a new queue head can still hit the aggregate pending limit. A displaced watched head resolves with RejectionKind::SupersededByReplace.

§

Queue

Appends new work to the slot’s FIFO queue.

The current owner leaves the slot first. Pending submissions are then considered from the front of the queue. A later Replace submission can still displace that head. The per-slot queue limit can reject with RejectionKind::QueueFull. The aggregate pending limit can reject with RejectionKind::ResourceLimit.

Waiting for controller admission has no built-in deadline and is outside the task’s per-attempt timeout. Keep the returned TaskId when the application may need to remove or cancel queued work.

See ControllerConfig for both limits.

Trait Implementations§

Source§

impl Clone for AdmissionPolicy

Source§

fn clone(&self) -> AdmissionPolicy

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

impl Copy for AdmissionPolicy

Source§

impl Debug for AdmissionPolicy

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Eq for AdmissionPolicy

Source§

impl PartialEq for AdmissionPolicy

Source§

fn eq(&self, other: &AdmissionPolicy) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for AdmissionPolicy

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> 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> 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> 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, <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