Replace heap-bound imports with durable streaming workspace storage #24
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
priority:P1
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/quasar#24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Quasar currently keeps the canonical workspace and an atomic import candidate in SBCL memory. Large JSON corpora expand substantially after parsing, so safe imports depend on a large Lisp heap even after removing redundant journal copies. This does not scale predictably and makes process memory the durability boundary.
Goal
Move canonical workspace persistence and staged imports to a durable database-backed implementation with bounded-memory streaming and backpressure. Preserve the existing single-writer, atomic commit, revision, journal, authorization, and event contracts.
Scope
workspace-storebackend suitable for canonical documents, graphs, and journals.Acceptance criteria
QUASAR_DYNAMIC_SPACE_MBfor supported inputs.Suggested first slice
Write an ADR comparing CouchDB-native staging, SQLite staging, and another transactional local store; select the backend and define the migration/recovery contract before implementation.
Phase 1 Tek9 storage landed
Merged via #34 at
32ecd2995916768d7f3020f2fbe1f563dc18771e.Completed subset of #24:
ca24ef35ea6877420cbca057dd7fb702fe29a740and CI installs/tests LMDB.#24 remains open. Phase 1 does not make the complete workspace/import path bounded-memory yet. Remaining limitations include:
The narrow follow-on is #35: move reads/paginated snapshots and staged imports directly onto Tek9, add durable chunk staging, backpressure, restart recovery, abandoned-stage cleanup, and memory/throughput telemetry without migrating the Phase 1 on-disk canonical schema again.