haiku.rag/haiku_rag_slim/haiku/rag
Yiorgis Gozadinos 2da294b850
Put multi-table writes behind one transaction boundary
Four call sites repeated lock, snapshot, try/except, restore. Each used
restore_table_versions, which restores in _tables() order — documents
first, contradicting RESTORE_TABLE_ORDER — and each caught Exception, so
a cancellation mid-write skipped rollback and left the earlier table
writes committed.

Store.write_transaction() holds the lock, snapshots under it, and rolls
back through _rollback_to_snapshot: RESTORE_TABLE_ORDER, shielded from
cancellation, absorbed cancellation re-delivered, rollback failure raised
with the original as cause. The two single-table update_meta sites keep
the bare lock.

The batch documents write moves inside the guarded body; it was outside
the try, so a failure there was never rolled back. Auto-vacuum is
scheduled after the transaction rather than inside it.

restore_table_versions is removed; those four sites were its only callers.
2026-08-19 14:05:40 +03:00
..
capabilities Lend the caller's client to the capability 2026-08-18 14:58:18 +03:00
chat Give the capsule to one return, and the run its own copy of state 2026-08-13 13:00:02 +03:00
chunkers Fail docling-serve requests over to another instance with per-instance breaking 2026-07-08 11:03:44 +03:00
client Put multi-table writes behind one transaction boundary 2026-08-19 14:05:40 +03:00
config Wire providers.docling_serve.timeout through to the client 2026-08-19 13:30:45 +03:00
converters Reuse the local docling converter across documents 2026-08-13 11:39:01 +03:00
embeddings Pool HTTP clients for vLLM embedding and vLLM/Jina reranking 2026-07-09 10:32:44 +03:00
ingester Move ingester telemetry setup behind argument parsing 2026-08-13 11:37:36 +03:00
inspector Do not duplicate metadata items in inspector 2026-08-18 12:30:13 +02:00
providers Wire providers.docling_serve.timeout through to the client 2026-08-19 13:30:45 +03:00
reranking Keep cross-encoder rerank scores apart when they saturate 2026-08-07 14:07:53 +03:00
sandbox Point the limit comments at the right limits 2026-07-28 19:11:37 +03:00
store Put multi-table writes behind one transaction boundary 2026-08-19 14:05:40 +03:00
tools Move the wire rewrite into the compaction capability 2026-08-13 13:00:02 +03:00
__init__.py Restructure into uv workspace to support minimal and full installations 2025-11-04 17:59:12 +02:00
app.py Accept images on CLI ask/analyze and MCP tools 2026-07-25 10:35:25 +03:00
circuit_breaker.py Move CircuitBreaker to a shared module 2026-07-08 11:03:30 +03:00
cli.py Stop eagerly importing Store from haiku.rag.store 2026-08-11 17:26:51 +01:00
context.py Batch context expansion across documents 2026-08-18 16:35:17 +03:00
doctor.py Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +03:00
logging.py Restructure into uv workspace to support minimal and full installations 2025-11-04 17:59:12 +02:00
mcp.py Give the MCP server one client for its lifetime 2026-08-18 14:58:18 +03:00
s3.py swap aioboto3 for obstore in the S3 client path 2026-05-11 11:29:42 +03:00
telemetry.py Route eval scripts through the shared telemetry configure 2026-07-10 11:38:33 +03:00
utils.py Map thinking onto Pydantic AI's unified setting 2026-07-27 18:26:42 +03:00