All checks were successful
CI / lint (push) Successful in 42s
CI / notebooks-smoke (push) Successful in 1m27s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / mc (push) Has been skipped
Infra CI / notebooks (push) Successful in 50s
Infra CI / zotero (push) Successful in 13s
Infra CI / docs (push) Successful in 1m12s
Infra CI / api (push) Successful in 1m0s
Infra CI / mc (push) Successful in 17s
Deploy / report (push) Successful in 12s
CI / test (push) Successful in 17m21s
conf.connect.publish_replica(): holds the primary's write lock, CHECKPOINTs the WAL, copies to <name>.ro.duckdb, swaps atomically — so the snapshot is always a consistent database and readers holding the old file keep a valid handle. Both ingest scripts republish as their final step, bounding staleness to ingest cadence. conf.connect.duckdb(): read-only opens resolve to the replica when it exists — notebook kernels never hold the primary's single-writer lock, so ingests stop failing under open notebooks (the M2/option-C fix from the concurrency spec). Opt-outs: replica=False param or STACK_DUCKDB_REPLICA=0. Write opens always use the primary. Validated live: replica published (3.1 GB), and the notebooks container resolves conf.connect.duckdb() to /home/kert/data/ aco.ro.duckdb with the rulemaking-comments data visible. 82 conf tests green (snapshot consistency, divergence, opt-outs, atomic republish).
13 KiB
13 KiB