• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bedrock-kv / bedrock / cfaab90af3975d11abb208ea2e4a14da8efae133
82%

Build:
DEFAULT BRANCH: develop
Ran 05 Sep 2026 07:18PM UTC
Jobs 1
Files 213
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 Sep 2026 07:17PM UTC coverage: 80.575% (-0.03%) from 80.609%
cfaab90af3975d11abb208ea2e4a14da8efae133

push

github

web-flow
bedrock-xfc: isolate Raft protocol test DETS tables (#232)

The latest `develop` CI failed before a Raft range-query test could
begin: its fixture returned `{:error, :incompatible_arguments}` while
opening the log ([original
run](https://github.com/bedrock-kv/bedrock/actions/runs/33976924772)).
This change gives each protocol test its own DETS table name so it can
open its log even while an earlier test's table is still closing.

Think of a DETS table name as a label on an open file. Every test had
its own temporary file, but all of them used the label `:protocol_test`.
If test A's label still points to file A when test B asks to use it for
file B, DETS rejects the request: one open label cannot refer to two
different files.

Tests running one at a time does not guarantee that DETS has finished
processing the previous test process's exit. The old `on_exit` callback
did not guarantee that either: ExUnit runs it in another process, and
[DETS only allows a process that opened a table to close its
handle](https://www.erlang.org/doc/apps/stdlib/dets.html#close/1). DETS
automatically closes the table when its opening process exits.

The fixture now derives its table name from the test module and test
name. For example, test A and test B get different labels as well as
different files. The ineffective fixture cleanup callback is removed;
normal DETS owner-exit cleanup remains responsible for closing the
table. The change is confined to the protocol test file.

The new regression deliberately keeps the first fixture open while
opening the second. Before the fix, it fails with the same
`:incompatible_arguments` error at `with_log/1`. After the fix, both
logs open, the second starts empty, and writes to either log stay
separate. This reproduces the conflicting-table condition
deterministically; it does not claim to reproduce the original CI
scheduler timing. A baseline of 100 repeated protocol-suite runs did not
hit that natural timing failure.

Validation:

- ... (continued)

7035 of 8731 relevant lines covered (80.57%)

1173.15 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
71.26
-2.3% lib/bedrock/data_plane/resolver/tree.ex
1
93.25
-0.61% lib/bedrock/data_plane/materializer/olivine/index_update.ex
Jobs
ID Job ID Ran Files Coverage
1 cfaab90af3975d11abb208ea2e4a14da8efae133.1 05 Sep 2026 07:18PM UTC 213
80.57
GitHub Action Run
Source Files on build cfaab90af3975d11abb208ea2e4a14da8efae133
  • Tree
  • List 213
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • cfaab90a on github
  • Prev Build on develop (#8F962E09...)
  • Next Build on develop (#A8886156...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc