Skip to content

Live-write ingest path (spec 9.4): micro-batched single-writer flushes #43

Description

@tenequm

Context

Spec 9.4 defers live-write. This issue activates it with the smallest design that is correct on both local and S3 storage, based on the storage research from the 2026-06-10 design session.

The write problem on object storage is churn, not latency: commits run ~1.2s p50 on S3 Standard (lance-format/lance#6752 benchmarks), commit cost grows with fragment count (lance-format/lance#5194), and per-turn writes from live sessions would produce exactly that fragment/version/OCC churn. Ingest latency itself is not user-facing - no agent blocks on pond storing its transcript.

Design: micro-batched single-writer ingest

  • One pond ingest process per data dir tails/receives live events and buffers them in memory.
  • Flush one merge_insert batch per interval (~30-60s) or size threshold, whichever first.
  • Single writer per data dir means no OCC contention from live-write itself; multi-host cron sync remains the existing OCC story.
  • Identical behavior against local and object-store URLs - no architecture fork.

This is deliberately one tier below MemWAL. MemWAL solves many-independent-writers contention at read-path, ops, and maturity costs (experimental spec; correctness fixes for flushed-memtable search visibility only landed in lance v7.1 betas - pond is pinned to 7.0.0). Adoption trigger, recorded so it is not relitigated: adopt MemWAL only when (a) hosted multi-writer ingest exists - many independent processes committing to the same tables - and (b) pond is off the 7.0.0 pin onto a line where the 7.1 read-path fixes have stabilized.

Hygiene that must hold (mostly already true)

Unlocks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions