#[non_exhaustive]pub struct TaskStoreConfig {
pub max_capacity: Option<usize>,
pub task_ttl: Option<Duration>,
pub eviction_interval: u64,
pub max_page_size: u32,
}Expand description
Configuration for InMemoryTaskStore.
#[non_exhaustive]: build it with Default and the with_* setters,
which cover every field; a struct literal is not available outside this
crate, so a field added later does not break callers.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.max_capacity: Option<usize>Maximum number of tasks to keep in the store. Once exceeded, the oldest
terminal (completed/failed/canceled/rejected) tasks are evicted first.
None means no limit.
Overload behavior: if the overflow cannot be covered by terminal
tasks alone, the oldest non-terminal tasks are evicted as a last
resort — bounded memory is prioritized over retaining in-flight rows.
An evicted in-flight task answers GetTask with task-not-found until
its next event is persisted (the background processor re-saves it),
so under sustained over-capacity write pressure the cap is a strong
bound on steady-state size, not an absolute invariant. Size
max_capacity above the realistic concurrent in-flight task count.
task_ttl: Option<Duration>Time-to-live for completed or failed tasks. Tasks in terminal states
older than this duration are evicted on the next write operation.
None means no TTL-based eviction.
eviction_interval: u64Number of writes between automatic eviction sweeps. Default: 64.
Amortizes the O(n) eviction cost so it doesn’t run on every single save().
max_page_size: u32Maximum allowed page size for list queries. Default: 1000.
Larger requested page sizes are clamped to this limit.
Implementations§
Source§impl TaskStoreConfig
impl TaskStoreConfig
Sourcepub const fn with_max_capacity(self, max: Option<usize>) -> Self
pub const fn with_max_capacity(self, max: Option<usize>) -> Self
Sets the maximum number of tasks kept; None is no limit. See
max_capacity for what happens past it.
Sourcepub const fn with_task_ttl(self, ttl: Option<Duration>) -> Self
pub const fn with_task_ttl(self, ttl: Option<Duration>) -> Self
Sets the time-to-live for terminal tasks; None disables TTL eviction.
Sourcepub const fn with_eviction_interval(self, writes: u64) -> Self
pub const fn with_eviction_interval(self, writes: u64) -> Self
Sets the number of writes between eviction sweeps.
Sourcepub const fn with_max_page_size(self, max: u32) -> Self
pub const fn with_max_page_size(self, max: u32) -> Self
Sets the maximum page size for list queries.
Trait Implementations§
Source§impl Clone for TaskStoreConfig
impl Clone for TaskStoreConfig
Source§fn clone(&self) -> TaskStoreConfig
fn clone(&self) -> TaskStoreConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TaskStoreConfig
impl Debug for TaskStoreConfig
Auto Trait Implementations§
impl Freeze for TaskStoreConfig
impl RefUnwindSafe for TaskStoreConfig
impl Send for TaskStoreConfig
impl Sync for TaskStoreConfig
impl Unpin for TaskStoreConfig
impl UnsafeUnpin for TaskStoreConfig
impl UnwindSafe for TaskStoreConfig
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> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request