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

tarantool / tarantool / 22775810579
88%

Build:
DEFAULT BRANCH: master
Ran 06 Mar 2026 06:21PM UTC
Jobs 1
Files 526
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

06 Mar 2026 06:06PM UTC coverage: 87.658% (+0.008%) from 87.65%
22775810579

push

github

Gerold103
limbo: don't wait for volatiles on promote/demote

PROMOTE/DEMOTE requests on prepare tried to wait for all limbo
entries to get fully persisted before the requests could be
applied.

The reason was that these requests are checking if their LSNs
actually do the expected thing. That is, either match the already
confirmed LSN, or affect some pending transactions.

The situation when a PROMOTE/DEMOTE has LSN > confirmed LSN but
there are no transactions affected by that usually means that such
transactions existed, but the current instance got them already
rolled back. Which in turn looks like a split-brain.

The waiting though also happened on the volatile entries. The ones
which were not even submitted to the journal anyway. And that
could lead to a deadlock. It was happening when the old leader had
some pending volatile txns in the limbo, got PROMOTE from a newer
leader, this PROMOTE started waiting on all the limbo entries to
get persisted, and these entries in turn couldn't make progress
either, because the current instance can't finish them on its
own.

As a temporary solution it should be enough to simply not wait for
the volatile entries. It is safe to roll them back anyway, and no
need to know their LSNs for that.

As an actual solution the limbo must get rid of any rollbacks that
aren't done by PROMOTE/DEMOTE. Which means removal of rollback by
timeout. This is the only case when the mentioned situation of
"old leader rolled something back on its own" can happen. This can
only be done starting 4.x.

Closes #12205

NO_DOC=bugfix

70427 of 118516 branches covered (59.42%)

27 of 30 new or added lines in 2 files covered. (90.0%)

26 existing lines in 11 files now uncovered.

105926 of 120840 relevant lines covered (87.66%)

1395469.56 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
3
95.16
-0.06% src/box/txn_limbo_queue.c

Uncovered Existing Lines

Lines Coverage ∆ File
1
88.96
-0.61% src/box/engine.c
1
96.88
-1.56% src/box/engine.h
1
96.3
0.0% src/box/relay.cc
1
90.14
-0.08% src/box/vy_log.c
1
90.38
-1.77% src/lib/core/trigger.cc
2
96.03
-0.1% src/box/iproto.cc
2
92.47
0.0% src/box/vinyl.c
2
89.98
-0.14% src/box/xrow.c
4
93.31
-1.27% src/lib/swim/swim_io.c
5
93.43
-0.97% src/box/xrow_update_field.c
6
97.05
-0.51% src/lib/msgpuck/msgpuck.h
Jobs
ID Job ID Ran Files Coverage
1 22775810579.1 06 Mar 2026 06:21PM UTC 526
87.66
GitHub Action Run
Source Files on build 22775810579
  • Tree
  • List 526
  • Changed 27
  • Source Changed 0
  • Coverage Changed 27
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 236b6aa6 on github
  • Prev Build on master (#22773914650)
  • Next Build on master (#22789462145)
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