You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test: SIGKILL crash test must verify committed data, not only that the file opens #384
tests/crash_kill_test.rs kills a child process during transact and checkpoint. After the kill it checks only two things:
Minigraf::open succeeds.
[:find ?e :where [?e :k ?v]] returns without an error.
It never checks that the data is correct. The query uses the AEVT path. #370 broke the EAVT (entity-bound) path and left AEVT intact. So this test passed every night while #370 was live.
The child also writes one fact per transact, so it cannot hit #371.
Ask
The child records each transaction it has confirmed as committed. For example, it writes the tx_count to a side file after execute returns and fsyncs that file.
After the kill and reopen, the parent checks that every confirmed transaction is visible:
through an entity-bound query (EAVT),
through an attribute scan (AEVT),
through a full scan.
All three must return the same result.
No data from a transaction that was never confirmed may be visible.
Vary the workload: multi-valued batches, batched retracts, several checkpoints before the kill, and kills timed inside save().
Run again after a second reopen, to catch problems that checkpoint() copies forward.
Why
This is the cheapest way to catch the class of bug that shipped in #370 and #371.
Activity
ci(crash-kill): alternate the nightly run between main and v3 (#384)
ci(crash-kill): alternate the nightly run between main and v3 (#384)
Merge pull request #484 from project-minigraf/test/384-crash-kill-data
Merge pull request #485 from project-minigraf/test/384-crash-kill-dat…
release: v2.0.4
adityamukho commentedon Oct 14, 2026
Done: #484 on
v3and the v2.x backport #485, released in v2.0.4. The nightly crash-kill job alternates betweenmainandv3.