v2026.6.11
·
199 commits
to main
since this release
Fixed
- Cold-open OOM + non-converging migration journal on consolidated DBs. A consolidated
cleo.dbkeeps one shared__drizzle_migrationsjournal but is reconciled on every open by four migration lineages (tasks/project/nexus/brain);reconcileJournalbuilt its orphan set from only the calling lineage, so each lineage deleted the others' journal rows as "orphans" → the journal never converged (oscillated) and every open re-ran a delete→re-probe→migrate write-transaction under a 30s lock (multi-minute, lock-blocked opens). Combined with per-connection SQLite reservations (mmap 256MB + cache 64MB + temp MEMORY) across uncapped concurrent processes (the auto-respawning daemon + queued opens), this exhausted host memory → OOM/SIGKILL. Fixes: (1) union-guard reconcile — a journal row is a true orphan only if its hash belongs to no lineage sharing the DB (sibling-lineage rows are preserved), so all lineages converge to a stable journal in one pass; (2)UNIQUE(hash)index +INSERT OR IGNOREmake re-probes idempotent (structural convergence); (3) per-connection memory bounded for one-shot/CLI opens (mmap_size=0, smallcache_size) — the daemon keeps the full hot-page window; (4) fleet fail-safes —--max-old-space-sizeon thecleo+ daemon Node processes, a single-flight lock around cold-open reconcile, and daemonStartLimitIntervalSec/StartLimitBurst. Verified on a 707 MB copy: journal converges and stays stable, cold-open 3m45s→20ms, peak RSS multi-GB→93 MB. (provenance: T11829; #990)