Skip to content

test_batch_delete_edge_cases is flaky under full-suite parallel load #92

Description

@erans

Observed while verifying #90.

Symptom

cargo test (full suite, all binaries in parallel) failed:

test test_batch_delete_edge_cases ... FAILED
test result: FAILED. 6 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.44s
error: test failed, to rerun pass `--test batch_delete_test`

Both of these then passed:

  • cargo test --test batch_delete_test in isolation — 7/7
  • a second full cargo test run — 191 test-result groups, 0 failures

So it is load-dependent, not a deterministic failure.

Not caused by #90

tests/batch_delete_test.rs never calls set_hide_internal_tables, and the flag defaults to false, so preprocess_query (src/query/executor.rs:40) short-circuits before reaching SqliteMasterFilter::translate. The filter is unreachable from that binary. The test also contains no sqlite_master reference.

Possible cause

The tests build table names from SystemTime::now().duration_since(UNIX_EPOCH).as_nanos() (tests/batch_delete_test.rs:9,113,166,210,266,299). Under heavy parallel load across test binaries that is a collision risk, and it is also the kind of setup that gets starved when many test servers contend for resources.

Worth capturing the actual assertion message next time it reproduces — the run above only surfaced the FAILED line, so the failing assertion has not been identified yet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions