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

bedrock-kv / bedrock
82%
develop: 82%

Build:
Build:
LAST BUILD BRANCH: bedrock-5yi/election-flapping
DEFAULT BRANCH: develop
Repo Added 02 Oct 2025 12:09AM UTC
Token s5ZhiY9p3BKcBOY6Au8fohhCDmrp89s9W regen
Build 582 Last
Files 216
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 bedrock-5yi/election-flapping
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • bedrock-162/atomic-localfs-cas
  • bedrock-1cp/object-storage-resolution
  • bedrock-22g/spread-materializer-placement
  • bedrock-31d/app-env-overrides-use-config
  • bedrock-3t9/durability-params
  • bedrock-5yi/election-flapping
  • bedrock-783/mint-audit-gap
  • bedrock-80f/peer-cluster-spike
  • bedrock-8cx/mutation-order
  • bedrock-93j/genserverapi-start-link
  • bedrock-a4n-hunt-dead-code
  • bedrock-awj.1/link-foreman-order
  • bedrock-awj.2/tsl-validation-fresh
  • bedrock-b28/fix-read-conflict-encoding
  • bedrock-bkj/tsl-lifecycle
  • bedrock-bkt/plt-cache-key
  • bedrock-ck3/reclaim-scratch-files
  • bedrock-czn/fix-strict-test-warnings
  • bedrock-dead-code-sweep
  • bedrock-egw/legacy-bed0-compat
  • bedrock-fae/gh-141-layout-boundaries
  • bedrock-gu0.5/ignore-stale-worker-health
  • bedrock-hve.1/fsck-chunk-structure
  • bedrock-jb4/index-manager-stats-accounting
  • bedrock-jq8/fix-task-exit-crash
  • bedrock-jsu/credo-nesting-empty-enum
  • bedrock-jyy/0-7-1-changelog
  • bedrock-jyy/0-7-1-retag
  • bedrock-jyy/fix-package-smoke
  • bedrock-jyy/release-0-7-1
  • bedrock-jyy/release-main-0-7-1
  • bedrock-jzh/local-filesystem-moduledoc
  • bedrock-km1/filter-localfs-internal-files
  • bedrock-ls9/director-notification-attribution
  • bedrock-mi1/selector-position-arithmetic
  • bedrock-ngl/timeout-window-advance-guard
  • bedrock-oep/empty-range
  • bedrock-p5v/fix-olivine-right-edge
  • bedrock-q67.21.13/recovery-stops-at-tag-0
  • bedrock-q67.21.14/rename-components
  • bedrock-q67.21.15/exclusion-safety-log-record
  • bedrock-q67.21.19/unparseable-keys-are-errors
  • bedrock-q67.21.20/bootstrap-membership
  • bedrock-q67.21.8/materializer-idle-timeout-config
  • bedrock-q67.26/gate-system-reads
  • bedrock-q67.35/trim-batch-finalized-at
  • bedrock-q67.36/arm-heartbeat-on-recover
  • bedrock-q67.44/no-evict-on-slow
  • bedrock-qb0g/thread-tx-through-recovery
  • bedrock-qj1/read-timeouts
  • bedrock-s9x/fix-transaction-builder-down-race
  • bedrock-sfu/normalize-exit-reasons
  • bedrock-skill-upgrade
  • bedrock-tah/livebook-placeholder-cleanup
  • bedrock-uvk/retry-telemetry-deterministic
  • bedrock-uvk/shard-server-retry-telemetry-flake
  • bedrock-v65/link-epoch-fencing
  • bedrock-vih/atomic-segment-preallocation
  • bedrock-w10/leader-durable-core-state
  • bedrock-wjt/compaction-version
  • bedrock-wxf.7/object-storage-disk-cache
  • bedrock-xfc/fix-dets-test-lifecycle
  • bedrock-zi44/snapshot-upload-policy
  • ccarvalho/fix-conflict-resolution-retries
  • chore/bedrock-fu8-dep-updates
  • chore/bedrock-qep-remove-beads-gitignore
  • ci/matrix-elixir-1.19.5-1.20.2
  • ci/otp-29-matrix
  • codex/recover-shard-materializers-on-restart
  • credo-specs-lib-only
  • develop
  • docs/readme-story
  • docs/readme-tighten
  • 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-phase-b-prereqs
  • 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-system-keyspace-guide
  • feature/q67-tag0-death
  • feature/q67-tsl-delta
  • feature/q67.21.1-distributor-lock
  • feature/q67.21.10-drop-layout-logs
  • feature/q67.21.11-core-state
  • feature/q67.21.12-system-materializers
  • feature/q67.21.13-recovery-stops-at-tag-0
  • feature/q67.21.16-shard-readability
  • feature/q67.21.17-listing-truthfulness
  • feature/q67.21.2-recovery-read-heal
  • feature/q67.21.3a-distributor-singleton
  • feature/q67.21.3b-placeholder
  • feature/q67.21.4a-recruitment
  • feature/q67.21.4b-healing
  • feature/q67.21.5-audit-fixes
  • feature/q67.21.5-idle-spindown
  • feature/q67.21.5b-adoption
  • feature/q67.21.6-in-band-retirement
  • feature/q67.21.9-materializer-set
  • feature/q67.37-typed-unlock-seed
  • feature/q67.38-tsl-services-kill
  • feature/q67.38-worker-self-displacement
  • feature/q67.40-by-key-routing
  • feature/q67.41-epoch-constant-logs
  • feature/q67.42-bootstrap-read-continuation
  • feature/q67.43-eval-cleanup
  • feature/q67.45-stale-window-exit
  • feature/q67.9-client-read-path
  • feature/q67.9-materializer-family
  • feature/q67.9-proxy-routing-endpoint
  • feature/q67.9-tsl-shard-field-kill
  • feature/reorganize_startup
  • feature/rework_olivine
  • feature/umbrella
  • feature/xma
  • fix/bedrock-287-health-fold-order
  • fix/bedrock-61c.1-cut-interval-coupling
  • fix/bedrock-61c.2-foreman-worker-enumeration
  • fix/bedrock-61c.3-recycler-max-available
  • fix/bedrock-ghd-local-object-atomicity
  • fix/bedrock-gu0.4-remove-wait-for-healthy
  • fix/bedrock-m7j-recycler-server-clauses
  • fix/bedrock-mxt-spinup-health
  • fix/bedrock-n5h-settle-health
  • fix/bedrock-n9w-placeholder-flake
  • fix/bedrock-wn6-hex-package-bloat
  • fix/bedrock-yp2-flaky-tests
  • fix/bedrock-z2e-monitor-workers
  • fix/deps-cve-hackney
  • fix/docs-warning-wal-format
  • 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/legacy-bootstrap-system-materializers
  • fix/legacy-materializer-family
  • fix/materializer-empty-log-descriptors
  • fix/read-intent-conflicts-bedrock-udr
  • fix/reading-waitlist-nil-reply-fn
  • integration/commit-path-perf
  • intent-ledger/real-bedrock-semantics
  • jessestimpson-patch-1
  • main
  • perf/decorrelated-retry-backoff
  • q67.20.5/sharded-deferred-metadata
  • q67.22-converged-verdicts
  • q67.22-retry-replay
  • q67.24-routing-window-versioning
  • q67.24-serialized-routing
  • q67.24-versioned-shard-table
  • q67.27-review-followups
  • q67.28-pipeline-validation
  • q67.29-dead-code
  • q67.30-metadata-collapse
  • q67.31-unread-system-keys
  • q67.32-fail-fast-resolver
  • q67.33-exact-relay
  • rag-system-write-gating
  • rag/ingress-keyspace-bounds
  • 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
  • worktree-qzr1-resolver-floor
  • worktree-qzr16-shard-ownership
  • worktree-qzr17-demux-drain
  • worktree-qzr18-replay-cursor
  • worktree-qzr19-compaction-cutover
  • worktree-qzr2-wal-trim
  • worktree-qzr20-minio-gate
  • worktree-qzr21-retain-stalled-attempt
  • worktree-qzr22-tsl-replay
  • worktree-qzr23-drain-backpressure
  • worktree-qzr24-persistence-docs
  • worktree-qzr25-rollover-publish
  • worktree-qzr26-sparse-preallocation
  • worktree-qzr27-cold-start
  • worktree-qzr28-uniform-transitions
  • worktree-qzr29-remove-floor-alarm

14 Sep 2026 08:53PM UTC coverage: 81.654% (-0.007%) from 81.661%
88fdb108976fad36cb3543603a24f670a938959a-PR-329

Pull #329

github

jallum
bedrock-5yi: Size the coordinator election timeout to the raft heartbeat cadence

Coordinator leadership flapped (roughly one election a second) whenever the
BEAM was under load, most visibly while a coordinator was down and each new
leader's recovery stalled.

bedrock_raft's leader skips a follower it heard from within heartbeat_ms, so
a healthy follower receives AppendEntries every 2 * heartbeat_ms (200ms,
measured on the harness), and a new leader's first AppendEntries can take as
long. The election timeout was 250-350ms: 50ms of slack. Under load a raft
round-trip through the coordinator's DETS log took 50-200ms, stretching
heartbeat gaps to 230-300ms. Of 84 candidacies logged during natural storms
on the harness, 64 fired 254-357ms after the follower's last AppendEntries.
Suspending the leader's coordinator for 150ms started an election in 2-3 of
8 trials; with the timeout below, 0 of 8.

A follower now waits (T, 2T] with T = 5 * heartbeat_ms: the window the
leader itself allows before stepping down when it hears from no quorum of
followers (bedrock_raft's quorum check). The two sides now agree on how long
silence means lost leadership, and a follower tolerates about 300ms of
latency beyond the heartbeat cadence. Failover and single-node boot wait
about 150-650ms longer (501-1000ms instead of 251-350ms).
Pull Request #329: bedrock-5yi: stop stale and too-short election timers from deposing healthy coordinator leaders

8 of 9 new or added lines in 1 file covered. (88.89%)

4 existing lines in 1 file now uncovered.

7188 of 8803 relevant lines covered (81.65%)

1140.97 hits per line

Relevant lines Covered
Build:
Build:
8803 RELEVANT LINES 7188 COVERED LINES
1140.97 HITS PER LINE
Source Files on develop
  • Tree
  • List 216
  • 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
88fdb108... bedrock-5yi/election-flapping bedrock-5yi: Size the coordinator election timeout to the raft heartbeat cadence Coordinator leadership flapped (roughly one election a second) whenever the BEAM was under load, most visibly while a coordinator was down and each new leader's reco... Pull #329 14 Sep 2026 08:55PM UTC jallum github
81.65
a527f4e9... bedrock-1cp/object-storage-resolution bedrock-1cp: Resolve the cluster's object storage backend in one place Four sites found the backend for themselves and disagreed. The coordinator and director read the node config's top level (each with its own path fallback order), the cluster s... Pull #328 14 Sep 2026 08:14PM UTC jallum github
81.88
8d0bb980... bedrock-w10/leader-durable-core-state bedrock-w10: Recover from the durable bootstrap, not the coordinator's copy A coordinator loaded prior_core_state from the bootstrap once, at boot, and afterwards learned only what its own directors notified it. A follower that later won leadersh... Pull #326 14 Sep 2026 07:55PM UTC jallum github
81.79
840a00f1... bedrock-hve.1/fsck-chunk-structure bedrock-hve.1: Pin bitstring size variables for Elixir 1.20 Elixir 1.20 warns when a variable is used inside size(...) of a bitstring match without the pin operator, and CI compiles with --warnings-as-errors, so the OTP 29 / Elixir 1.20 job faile... Pull #324 14 Sep 2026 07:50PM UTC jallum github
81.23
153a2b62... develop bedrock-3t9: seed a fresh cluster's sizing from the node config the durability check validates (#323) Tracks bedrock-3t9. ## Why Strict durability mode is supposed to refuse to start a cluster that can't meet the durability profile — three logs... push 14 Sep 2026 07:46PM UTC web-flow github
81.66
5beb5216... bedrock-3t9/durability-params bedrock-3t9: seed a fresh cluster's sizing from the node config the durability check validates The startup durability check validated desired_logs and desired_replication_factor from node config (durability: [...]), but a fresh cluster's paramete... Pull #323 14 Sep 2026 07:41PM UTC jallum github
81.67
7e252fae... bedrock-80f/peer-cluster-spike bedrock-80f: Prove a real multi-node cluster can be driven from ExUnit Phase 0 of the chaos-testing harness. Bedrock's identity is node-keyed -- coordinator_nodes is a list of node(), capabilities are per-node config, and ClusterSupervisor refuse... Pull #322 14 Sep 2026 07:12PM UTC jallum github
81.6
3af051c2... develop Bumped dependencies to clear CVEs push 14 Sep 2026 07:11PM UTC jallum github
81.6
35ae854a... develop bedrock-q67.21.14: Rename components to match their clarified purposes (#304) The q67.21.9 to .13 stack changed what several recovery and distributor components do, and their names kept describing the old behaviour. This is the deferred rename pa... push 14 Sep 2026 06:47PM UTC web-flow github
81.6
e9a9f04e... bedrock-22g/spread-materializer-placement bedrock-22g: address cold-audit notes - materializer_bootstrap_phase: say why recovery's hd() stays — it seats one worker, tag 0, on a fresh cluster, and a singleton has nothing to spread itself against. - server: name the placement cost of t... Pull #290 14 Sep 2026 06:09PM UTC jallum github
81.52
See All Builds (582)

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