Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Errors, Ordering, Shutdown, and Memory

ReliabilityFailure at every boundaryRevision 1b998fc

Public logging is fallible even where today’s local path rarely fails; the result contract leaves room for compatibility and serialization failures. High-frequency or teardown paths often log an error once and continue, because observability code should not normally crash the application it observes.

Rows receive globally distinctive IDs and explicit timepoints. The chunk store rejects unsorted rows, treats empty chunks and duplicate chunk IDs as no-ops, records compaction lineage, and emits store events only after coherent index mutation. Those events invalidate caches and update subscribers.

Shutdown is ordered. A flush marker acknowledges all prior commands from that producer; final drop disconnects the batcher output before sending shutdown and joining, preventing a full bounded channel from trapping teardown. The forwarding layer then flushes the active sink.

Memory is managed at several scopes: byte-bounded ingestion channels prevent producer backlog, chunk-store accounting and garbage collection bound retained history, memoizers reuse expensive query/visualization work, and GPU caches own device resources. A limit at one stage cannot bound all later stages.

Native and browser overload behavior differs intentionally: native senders can block on a condition variable; WebAssembly cannot block the browser thread and therefore records the over-budget condition while continuing. Reliability means describing platform truth, not forcing identical APIs to lie.