pub struct Admission {
cpu: Arc<Semaphore>,
mem: Option<Arc<Semaphore>>,
queued: AtomicUsize,
in_flight: AtomicUsize,
rejected_overload: AtomicU64,
rejected_queue_full: AtomicU64,
rejected_shed: AtomicU64,
resident_bytes: AtomicU64,
cfg: AdmissionCfg,
}Expand description
Shared admission state (one per process, in AppState).
Fields§
§cpu: Arc<Semaphore>§mem: Option<Arc<Semaphore>>None when the memory gate is disabled (mem_budget_bytes == 0).
queued: AtomicUsize§in_flight: AtomicUsize§rejected_overload: AtomicU64§rejected_queue_full: AtomicU64§rejected_shed: AtomicU64§resident_bytes: AtomicU64Resident set size sampled by the background loop (bytes). Tests write
this directly; production writes come from spawn_rss_sampler.
cfg: AdmissionCfgImplementations§
Source§impl Admission
impl Admission
pub fn new(cfg: AdmissionCfg) -> Self
Sourcepub async fn acquire(
self: &Arc<Self>,
reserve_bytes: u64,
) -> Result<AdmissionGuard, ApiError>
pub async fn acquire( self: &Arc<Self>, reserve_bytes: u64, ) -> Result<AdmissionGuard, ApiError>
Admit one parse job that will buffer up to reserve_bytes of upload.
Multipart rarely declares a length up front, so callers reserve the configured max file size — a conservative reservation that guarantees the byte bound holds (tighter packing is a follow-up once the actual size is known post-extract).
Sourcepub fn resident_bytes(&self) -> u64
pub fn resident_bytes(&self) -> u64
Current sampled resident set size in bytes (0 = unknown/not sampled).
Sourcepub fn is_shedding(&self) -> bool
pub fn is_shedding(&self) -> bool
True when the RSS breaker would currently shed new work (readiness).
Sourcepub fn metrics_text(&self) -> String
pub fn metrics_text(&self) -> String
Prometheus text exposition of the admission gauges/counters.
Sourcepub fn set_resident_bytes(&self, bytes: u64)
pub fn set_resident_bytes(&self, bytes: u64)
Test/simulation hook: set the sampled RSS directly.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Admission
impl !RefUnwindSafe for Admission
impl Send for Admission
impl Sync for Admission
impl Unpin for Admission
impl !UnwindSafe for Admission
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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<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>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.