pub struct ObjectStoreCaps {
pub result_output_mib: Option<u32>,
pub agent_releases_mib: Option<u32>,
pub app_packages_mib: Option<u32>,
pub scripts_mib: Option<u32>,
pub collections_mib: Option<u32>,
}Expand description
Per-bucket disk caps (MiB) for the five NATS Object Stores, reconciled
onto each backing OBJ_* stream at backend boot and on save (#1247).
None (unset) ⇒ the built-in default below, so a blank SPA field
preserves the out-of-box budget and a deployment that never opens the
Settings page is still capped.
Why these exist: agent_releases / app_packages / scripts were
created with no caps at all, and caps added to code AFTER a bucket
existed never reached the live broker (ensure_object_store tolerates
the 10058 config-drift error rather than reconciling — which is how
OBJ_result_output grew to 6.76 GB against a nominal 1 GiB cap).
The reconcile path (bootstrap::reconcile_object_store_max_bytes) makes
the configured value actually land, so these defaults are also the
fix for already-drifted buckets, applied on the first boot after
upgrade.
Fields§
§result_output_mib: Option<u32>result_output — overflow stdout/stderr blobs. Transport +
replay buffer (the projector derefs within seconds into SQLite),
so this is a runaway-output backstop, not a history budget.
agent_releases_mib: Option<u32>agent_releases — one exe per version (~100 MB each). Sized for
~20 recent versions.
app_packages_mib: Option<u32>app_packages — operator-curated installers; the largest bucket
in practice (1.5 GB at measurement time, uncapped).
scripts_mib: Option<u32>scripts — manifest script bodies; tiny payloads, so the cap is
a cardinality backstop.
collections_mib: Option<u32>collections — collect-job bundles. Its max_age has its own
knob (ServerSettings::collect_retention_days); this caps the
disk regardless of window.
Implementations§
Source§impl ObjectStoreCaps
impl ObjectStoreCaps
pub fn effective_result_output_mib(&self) -> u32
pub fn effective_agent_releases_mib(&self) -> u32
pub fn effective_app_packages_mib(&self) -> u32
pub fn effective_scripts_mib(&self) -> u32
pub fn effective_collections_mib(&self) -> u32
Sourcepub fn effective_all(&self) -> [(&'static str, u32); 5]
pub fn effective_all(&self) -> [(&'static str, u32); 5]
(bucket, effective cap in MiB) for every object store, in
bootstrap order — the reconcile loop’s input.
Trait Implementations§
Source§impl Clone for ObjectStoreCaps
impl Clone for ObjectStoreCaps
Source§fn clone(&self) -> ObjectStoreCaps
fn clone(&self) -> ObjectStoreCaps
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 ObjectStoreCaps
impl Debug for ObjectStoreCaps
Source§impl Default for ObjectStoreCaps
impl Default for ObjectStoreCaps
Source§fn default() -> ObjectStoreCaps
fn default() -> ObjectStoreCaps
Source§impl<'de> Deserialize<'de> for ObjectStoreCapswhere
ObjectStoreCaps: Default,
impl<'de> Deserialize<'de> for ObjectStoreCapswhere
ObjectStoreCaps: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ObjectStoreCaps
Source§impl PartialEq for ObjectStoreCaps
impl PartialEq for ObjectStoreCaps
Source§impl Serialize for ObjectStoreCaps
impl Serialize for ObjectStoreCaps
impl StructuralPartialEq for ObjectStoreCaps
Auto Trait Implementations§
impl Freeze for ObjectStoreCaps
impl RefUnwindSafe for ObjectStoreCaps
impl Send for ObjectStoreCaps
impl Sync for ObjectStoreCaps
impl Unpin for ObjectStoreCaps
impl UnsafeUnpin for ObjectStoreCaps
impl UnwindSafe for ObjectStoreCaps
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.