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

tarantool / tarantool / 27306094803
88%

Build:
DEFAULT BRANCH: master
Ran 10 Jun 2026 09:16PM UTC
Jobs 1
Files 525
Run time 2min
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

10 Jun 2026 09:01PM UTC coverage: 87.667% (-0.02%) from 87.685%
27306094803

push

github

Gerold103
limbo: sync election_mode=off with Raft

Instance with election_mode='off' still allows box.ctl.promote().

This was a mistake to enable this in the public API, but it is
already done, and deprecation will take a long while.

From user's PoV such usage of synchronous replication looks
deceitfully convenient, but is very dangerous as it will
sporadically result into split-brain errors even when the leader
election works completely smooth. This will stay. And the reason
for such behavior is that elections with election_mode='off'
effectively use election quorum 1. No matter what
replication_synchro_quorum is configured to.

From dev's PoV the biggest pain was that with off-mode the limbo
had to ignore the Raft state machine. It manifested in many places
in the code as having to check raft_is_enabled() being true or
false.

In the future it would be very hard to make this hack co-exist
with the synchronous promotions. It would bloat the branching on
raft_is_enabled() and its corner cases even more.

The current patch does a simple thing - makes limbo and Raft
work literally like the high-level observable behavior of
promotions with election_mode='off'. Which means - use election
quorum 1 and txn confirmation quorum as configured.

Then Raft being always enabled (after recovery is complete) is
actually ok, and makes the code way simpler, allowing to eliminate
tons of corner cases and hacky checks, while preserving most of
the (buggy by design) behavior.

It will also be able to co-exist with the synchro promotions, as
these new promotion entries in the future will simply use the
election_quorum (= 1 in case of 'off' mode), and hence will work
like before.

Nonetheless some behavior changes might still be observed. Could
be considered bug fixes. Specifically, now even with
election_mode='off':

- on WAL error the leader will resign.

- box.info.ro_reason "election" is deleted, only "synchro"
  remains.

- box.info.election.state will show 'leader' when the... (continued)

70744 of 119006 branches covered (59.45%)

59 of 60 new or added lines in 3 files covered. (98.33%)

118 existing lines in 17 files now uncovered.

106371 of 121335 relevant lines covered (87.67%)

1365869.77 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
90.85
0.05% src/box/box.cc

Coverage Regressions

Lines Coverage ∆ File
43
95.18
-0.03% src/box/replication.cc
15
91.88
-2.17% src/box/memtx_space.c
15
95.4
0.45% src/box/raft.c
9
93.01
-2.07% src/box/txn_limbo_queue.c
9
88.14
-7.63% src/box/vy_regulator.c
6
74.4
-1.45% src/main.cc
5
93.4
0.19% src/box/journal.c
3
85.78
-0.19% src/box/xlog.c
2
87.01
-0.41% src/box/vy_stmt.c
2
87.93
-3.3% src/box/xlog.h
2
93.43
-0.39% src/box/xrow_update_field.c
2
93.05
0.11% src/lib/core/fiber.c
1
93.02
-0.35% src/box/txn_limbo.c
1
96.55
-1.15% src/lib/core/histogram.c
1
97.15
0.0% src/lib/msgpuck/msgpuck.h
1
99.08
-0.15% src/lib/raft/raft.c
1
96.1
-0.05% src/lib/salad/bps_tree.h
Jobs
ID Job ID Ran Files Coverage
1 27306094803.1 10 Jun 2026 09:16PM UTC 525
87.67
GitHub Action Run
Source Files on build 27306094803
  • Tree
  • List 525
  • Changed 41
  • Source Changed 0
  • Coverage Changed 41
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • a315dd70 on github
  • Prev Build on master (#27202430798)
  • Next Build on master (#27400195276)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc