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

bedrock-kv / bedrock
73%

Build:
DEFAULT BRANCH: develop
Repo Added 02 Oct 2025 12:09AM UTC
Token s5ZhiY9p3BKcBOY6Au8fohhCDmrp89s9W regen
Build 221 Last
Files 226
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

LAST BUILD ON BRANCH develop
branch: develop
CHANGE BRANCH
x
Reset
Sync Branches
  • develop
  • ccarvalho/fix-conflict-resolution-retries
  • ci/matrix-elixir-1.19.5-1.20.2
  • codex/recover-shard-materializers-on-restart
  • credo-specs-lib-only
  • feature/bedrock-4jo
  • feature/bedrock-as6j
  • feature/bedrock-w84
  • feature/bedrock-wsq
  • feature/increase_test_coverage
  • feature/q67-death-healing
  • feature/q67-death-healing-reconciled
  • feature/q67-distributor
  • feature/q67-idle-spindown
  • feature/q67-log-trimming
  • feature/q67-metadata-pipeline
  • feature/q67-metadata-window-protocol
  • feature/q67-phase-a
  • feature/q67-placeholder
  • feature/q67-readoption
  • feature/q67-recovery-relaxation
  • feature/q67-recruitment
  • feature/q67-shard-key-clearing
  • feature/q67-sharded-abort-metadata
  • feature/q67-spindown-readoption
  • feature/q67-system-key-encoding
  • feature/q67-tag0-death
  • feature/q67-tsl-delta
  • feature/reorganize_startup
  • feature/rework_olivine
  • feature/umbrella
  • feature/xma
  • fix/bedrock-yp2-flaky-tests
  • fix/durable-read-path
  • fix/flaky-tests
  • fix/issue-68-fresh-cluster-routing
  • fix/issue-70-olivine-waitlist-timeout
  • fix/issue-71-materializer-bootstrap
  • fix/materializer-empty-log-descriptors
  • fix/read-intent-conflicts-bedrock-udr
  • fix/reading-waitlist-nil-reply-fn
  • intent-ledger/real-bedrock-semantics
  • jessestimpson-patch-1
  • main
  • release/0.4.0
  • test-coverage/basalt-logic
  • test-coverage/coordinator-durability
  • test-coverage/directory
  • test-coverage/finalization
  • test-coverage/layout-index
  • test-coverage/olivine-index-update
  • test-coverage/olivine-logic
  • test-coverage/olivine-reading
  • test-coverage/repo
  • test-coverage/transaction-encoding

17 Jul 2026 02:38AM UTC coverage: 72.989% (+0.4%) from 72.6%
eecf16dcfafe2a292a260de84aa84802b538deaf

push

github

web-flow
Record read conflicts when a read is issued; cover key-selector scan spans (bedrock-udr, bedrock-v2c) (#109)

## Why

Two transactions could both read a missing key, both write it, and both
commit:

```
Transaction A                     Transaction B
get("job/123/owner") → not found
                                  get("job/123/owner") → not found
set("job/123/owner", "worker-A")
                                  set("job/123/owner", "worker-B")
commit ✓                          commit ✓   ← should have aborted
```

The resolver can only abort B if A's read conflict set contains the key
— but a storage miss (`{:error, :not_found}`) took an error path that
skipped conflict recording entirely. **Reading nothing is still
reading:** "the key was absent" is information the transaction acted on.
(Same defect as #108; found via Job Queue QA.)

Key-selector reads had the same hole, wider: a selector's result depends
on *every* key between its anchor and the key it resolves to — an insert
anywhere in that span changes the resolution — but only the resolved key
was recorded on a hit, and nothing on a miss.

## What

Both fixes follow FoundationDB (`fdbclient/NativeAPI.actor.cpp`):

- **Point reads** register the conflict **when the read is issued**,
before storage answers (`record_read_intent/3`). No result shape —
value, miss, or error — can dodge it, because recording never looks at
the result. Mirrors `Transaction::get()`'s
`push_back(singleKeyRange(key))` before the read.
- **Selector reads** register **after resolution** (the span isn't
knowable earlier — FDB's `extraConflictRanges`): a hit records
`[min(anchor, resolved), key_after(max(anchor, resolved)))`; a miss
records the shard range that was scanned and found empty (FDB's
empty-range-read analog).

Deliberate, FDB-matching behaviors: `snapshot: true` reads record
nothing; reads satisfied from your own writes record nothing; a point
read that *fails* after issue still leaves its conflict behind.

## ... (continued)

25 of 26 new or added lines in 1 file covered. (96.15%)

1 existing line in 1 file now uncovered.

5734 of 7856 relevant lines covered (72.99%)

1003.27 hits per line

Relevant lines Covered
Build:
Build:
7856 RELEVANT LINES 5734 COVERED LINES
1003.27 HITS PER LINE
Source Files on develop
  • Tree
  • List 215
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
eecf16dc... develop Record read conflicts when a read is issued; cover key-selector scan spans (bedrock-udr, bedrock-v2c) (#109) ## Why Two transactions could both read a missing key, both write it, and both commit: ``` Transaction A Transactio... push 17 Jul 2026 02:39AM UTC web-flow github
72.99
06eee2ef... develop Fix flaky olivine 1ms-timeout test race (bedrock-yp2) Partial cherry-pick of 5789085b (#111): only the olivine genserver_integration fix applies to develop — the two distributor test fixes live on feature/q67-phase-a, ported there separately. (c... push 17 Jul 2026 02:20AM UTC jallum github
72.6
5789085b... develop Fix three flaky test races failing develop CI (bedrock-yp2) (#111) ## Summary Three timing-sensitive tests each failed one recent develop CI run, always on the OTP 27.2 / Elixir 1.17.3 matrix job (the slowest). In every failing log the product b... push 17 Jul 2026 02:12AM UTC web-flow github
75.16
58bca320... develop Merge PR #105: metadata distribution end-to-end at the commit proxy (bedrock-q67.15) push 15 Jul 2026 08:22PM UTC jallum github
75.16
10a20bf6... develop Enable Credo Readability.Specs for lib/, add missing @specs (bedrock-qjp) (#90) ## Summary - Convert `.credo.exs` checks to list form (merges with credo defaults; a map-form `enabled:` list would replace the entire default set) and enable `Credo.... push 14 Jul 2026 09:11PM UTC web-flow github
72.65
e5a7a597... develop Extend CI test matrix with Elixir 1.19.5 and 1.20.2 (bedrock-4cg) (#81) ## Summary - Adds two entries to the test matrix in `elixir_ci.yaml`: Elixir 1.19.5 / OTP 28.3 and Elixir 1.20.2 / OTP 28.3, alongside the existing 1.17.3/27.2 and 1.19.4/28.... push 14 Jul 2026 08:59PM UTC web-flow github
72.65
3385ce0d... develop Add behavioral tests for Coordinator Durability registration and notification (bedrock-wey) (#83) ## Summary - Adds `durability_test.exs` with 16 tests for `Coordinator.Durability` (coverage 74.3% → 98.2%) - Durable write submission uses a real s... push 14 Jul 2026 08:35PM UTC web-flow github
72.56
057755a8... develop Add behavioral tests for Basalt Logic fetch waitlist and recovery lock (bedrock-8dc) (#84) ## Summary - Adds `basalt/logic_test.exs` with 18 tests bringing `Basalt.Logic` from 82.2% to **100% coverage**: shutdown (asserts the dets table actually ... push 14 Jul 2026 08:29PM UTC web-flow github
71.93
9ad43326... develop Add tests for Transaction encoding error paths and compare_and_clear (bedrock-aec) (#85) ## Summary - Extends `transaction_test.exs` with 27 tests (44 → 71) for the wire-format codec (coverage 97.5% → 98.5%; remaining 4 lines are unreachable) - B... push 14 Jul 2026 08:27PM UTC web-flow github
71.28
d2001662... develop Add behavioral tests for Repo transaction lifecycle + fix rollback/1 crash (bedrock-60h, bedrock-j64) (#86) ## Summary - Adds `repo_transact_test.exs` with 24 tests for `Internal.Repo` (coverage 81.4% → 99.7%): the cast-based in-transaction API w... push 14 Jul 2026 08:27PM UTC web-flow github
70.85
See All Builds (221)

Badge your Repo: bedrock

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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