pub struct LaminarConfig {Show 29 fields
pub materialized_view_max_rows: usize,
pub materialized_view_max_bytes: usize,
pub materialized_view_read_cache_bytes: usize,
pub reference_table_max_rows: usize,
pub reference_table_max_bytes: usize,
pub datafusion_memory_limit_bytes: usize,
pub default_buffer_size: usize,
pub push_source_max_bytes: usize,
pub default_backpressure: BackpressureStrategy,
pub storage_dir: Option<PathBuf>,
pub checkpoint: Option<StreamCheckpointConfig>,
pub object_store_url: Option<String>,
pub object_store_options: HashMap<String, String>,
pub http_auth_token: Option<SecretString>,
pub delivery_guarantee: DeliveryGuarantee,
pub pipeline_channel_capacity: Option<usize>,
pub source_queue_max_bytes: usize,
pub pipeline_batch_window: Option<Duration>,
pub pipeline_drain_budget_ns: Option<u64>,
pub pipeline_query_budget_ns: Option<u64>,
pub pipeline_max_input_buf_batches: Option<usize>,
pub pipeline_max_input_buf_bytes: Option<usize>,
pub pipeline_max_managed_state_bytes: Option<usize>,
pub temporal_join_idle_history_retention: Option<Duration>,
pub source_idle_timeout: Option<Duration>,
pub event_time_max_future_skew: Duration,
pub pipeline_backpressure_policy: BackpressurePolicy,
pub restart_policy: RestartPolicy,
pub shared_source_isolation: bool,
}Expand description
Configuration for a LaminarDB instance.
Fields§
§materialized_view_max_rows: usizeLive row limit per local MV; multiset mode counts distinct rows (default 1,000,000). Applies to embedded and single-node execution; must be nonzero. Keyed staging and each input batch allow at most twice this many rows.
materialized_view_max_bytes: usizePer-MV retained-memory charge limit (default 256 MiB); must be nonzero. Counts Arrow backing capacity, owned scalar/key storage and fixed entry metadata. Shared buffers are conservatively charged per stored batch/scalar. Map spare capacity, schema/converter/allocator overhead, snapshots and checkpoint scratch are separate. Keyed staging and input conversion have separate limits of twice this charge plus bounded staging metadata. Oversized net-neutral cycles can fail before live admission. An append view counts the rows it holds in memory: those since the last committed checkpoint, or its whole retained log without checkpointing. A cycle over the limit fails.
materialized_view_read_cache_bytes: usizeByte budget of the committed view state decoded for reads and cached by digest (default 256 MiB), shared by every view. Zero disables the cache.
reference_table_max_rows: usizeMaximum live rows in each reference table (default 1,000,000). Applies to embedded and single-node tables; must be nonzero.
reference_table_max_bytes: usizePer-table encoded-key, row metadata and retained Arrow capacity charge (default 256 MiB). Shared buffers count once per table, using Arrow-reported allocation capacity. Hash-map spare capacity, schema/allocator/opaque-owner overhead, caller-held data, prepared replacements, query snapshots and checkpoint scratch are separate from this live limit.
datafusion_memory_limit_bytes: usizeShared limit for participating DataFusion reservations across this DB’s contexts.
Must be greater than zero; defaults to DEFAULT_DATAFUSION_MEMORY_LIMIT_BYTES.
DB-owned contexts cannot spill to disk. Direct Arrow allocations, managed state,
queues, connector-owned contexts and process RSS are outside this budget.
default_buffer_size: usizeStreaming channel buffer size.
push_source_max_bytes: usizePer-source Arrow-byte limit for in-process push queues, held until the pipeline reads. Each source’s snapshot history has a separate cap of the same size (default 64 MiB). Applies to typed handles after Arrow conversion. Caller-held batches, conversion scratch, query snapshots and downstream buffers are outside these two limits.
default_backpressure: BackpressureStrategyBackpressure strategy.
storage_dir: Option<PathBuf>Checkpoint directory. None = in-memory only.
checkpoint: Option<StreamCheckpointConfig>Checkpoint config. None = disabled.
object_store_url: Option<String>Cloud checkpoint URL, e.g. s3://bucket/prefix.
object_store_options: HashMap<String, String>Credential/config overrides for the object store.
http_auth_token: Option<SecretString>Bearer token presented when forwarding requests to the cluster leader’s
HTTP API (set when the server gates /api/v1 with console_token).
delivery_guarantee: DeliveryGuaranteeDelivery guarantee.
pipeline_channel_capacity: Option<usize>Source-to-coordinator channel capacity. None = 64.
source_queue_max_bytes: usizeShared connector FIFO Arrow-byte budget, including parked messages (default 64 MiB). Also caps each source’s one batch waiting for capacity or a cursor. Does not cover connector decode scratch, embedded push rings, staged cycles, graph buffers or RSS.
pipeline_batch_window: Option<Duration>Micro-batch coalescing window. None = 5ms connectors / 0 embedded.
pipeline_drain_budget_ns: Option<u64>Drain budget per cycle (ns). None = 1ms.
pipeline_query_budget_ns: Option<u64>Per-query budget (ns). None = 8ms.
pipeline_max_input_buf_batches: Option<usize>Per-port operator input-buffer cap (batches). None = 256.
pipeline_max_input_buf_bytes: Option<usize>Per-port retained Arrow-byte cap, including source priming. None = disabled.
Slices charge their backing storage; each fan-out port charges independently.
pipeline_max_managed_state_bytes: Option<usize>Pipeline-wide managed working-state budget in charged bytes. None resolves to
DEFAULT_MAX_MANAGED_STATE_BYTES when the database is constructed.
temporal_join_idle_history_retention: Option<Duration>Retention contract for right-side history while a temporal join input is idle. Required only when the pipeline contains a temporal join.
source_idle_timeout: Option<Duration>Mark inactive watermarked sources and input channels idle after this duration.
None disables automatic idle detection.
event_time_max_future_skew: DurationEvent timestamps farther ahead of wall clock do not advance source watermarks. Zero disables the guard.
pipeline_backpressure_policy: BackpressurePolicyBackpressure policy. BackpressurePolicy::ShedOldest is BestEffort only.
restart_policy: RestartPolicyAuto-restart policy applied when supervision is enabled.
Isolate queries that share a source into independent failure domains. Default off; when off, shared-source queries fault and recover together.
Trait Implementations§
Source§impl Clone for LaminarConfig
impl Clone for LaminarConfig
Source§impl Debug for LaminarConfig
impl Debug for LaminarConfig
Auto Trait Implementations§
impl Freeze for LaminarConfig
impl RefUnwindSafe for LaminarConfig
impl Send for LaminarConfig
impl Sync for LaminarConfig
impl Unpin for LaminarConfig
impl UnsafeUnpin for LaminarConfig
impl UnwindSafe for LaminarConfig
Blanket Implementations§
impl<T> Allocation for T
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
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 more§impl<T> AsAny for T
impl<T> AsAny for T
§fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
dyn Any reference to the object: Read more§fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ
fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ
Arc<dyn Any> reference to the object: Read more§fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
Box<dyn Any>: Read more§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
std::any::type_name, since Any does not provide it and
Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSend for Twhere
T: Send,
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.