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

bedrock-kv / bedrock / e1838b70edd1bad3ff2588d9d6af4261dfe7eab5
82%

Build:
DEFAULT BRANCH: develop
Ran 05 Sep 2026 02:13PM 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 02:09PM UTC coverage: 79.942% (-0.06%) from 80.0%
e1838b70edd1bad3ff2588d9d6af4261dfe7eab5

push

github

web-flow
Give relay-chain receive assertions a window scheduling can't miss (#228)

Closes bedrock-n9w.

### Why

`PlaceholderTest "at most one coverage demand per tag until covered"`
failed on `main` (run 33218502281, OTP 27.3, the 0.7.0 release merge)
and again in a local full-suite run two days later — both times as
*"Assertion failed, no matching message after 100ms / The process
mailbox is empty."*

The mailbox being **empty** is the tell. The demand was not lost,
duplicated, or mis-addressed — it was late. Every assertion in this
class waits on a chain the scheduler must run before the message can
arrive: a `Task` spawn, then a `GenServer.call` into the placeholder,
then the placeholder's cast back to the test (or a telemetry handler's
`send`, or a spawned stub relaying). Three process hops against ExUnit's
default 100ms window, on a CI box running the whole suite in parallel.

### The diagnosis is proven, not presumed

A spike made the race deterministic: suspend the placeholder with
`:sys.suspend/1`, issue the gets, resume it 150ms later from a helper
process. That reproduces the CI failure **byte-for-byte** — same
message, same empty mailbox — and the identical scenario passes with a
generous window. If late delivery had *not* reproduced the failure, the
diagnosis would have been wrong and something real would have been
hiding under the timeout. (The spike is not landed: it tests the
assertion budget, not the product.)

Two prior data points calibrate the window. This file had already been
bitten once — the coverage-failure test carried `, 1_000` with the
comment *"the default 100ms flakes under full-suite load"* — one site
hardened, fourteen siblings left bare, and a bare sibling is what failed
`main`. And bedrock-uvk records a **1.5s** window being missed under
full-suite load elsewhere. Hence 5s: an `assert_receive` window is free
when the message is prompt; it only delays the report of an
already-failing test.

### What changed

All 36 relay-chain... (continued)

6935 of 8675 relevant lines covered (79.94%)

1023.69 hits per line

Coverage Regressions

Lines Coverage ∆ File
4
68.97
-4.6% lib/bedrock/data_plane/resolver/tree.ex
1
93.87
-0.61% lib/bedrock/data_plane/materializer/olivine/index_update.ex
Jobs
ID Job ID Ran Files Coverage
1 e1838b70edd1bad3ff2588d9d6af4261dfe7eab5.1 05 Sep 2026 02:13PM UTC 213
79.94
GitHub Action Run
Source Files on build e1838b70edd1bad3ff2588d9d6af4261dfe7eab5
  • Tree
  • List 213
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • e1838b70 on github
  • Prev Build on develop (#3EC285E8...)
  • Next Build on develop (#DF02343E...)
  • 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