8000 test: SIGKILL crash test must verify committed data, not only that the file opens · Issue #384 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

test: SIGKILL crash test must verify committed data, not only that the file opens #384

Closed

Description

@adityamukho

Problem

tests/crash_kill_test.rs kills a child process during transact and checkpoint. After the kill it checks only two things:

  1. Minigraf::open succeeds.
  2. [: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

  1. added this to the v3.0.0 milestone on Sep 26, 2026
  2. adityamukho commented on Oct 14, 2026

    @adityamukho
    CollaboratorAuthor

    Done: #484 on v3 and the v2.x backport #485, released in v2.0.4. The nightly crash-kill job alternates between main and v3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0