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

tarantool / tarantool / 12030532536
88%

Build:
DEFAULT BRANCH: master
Ran 26 Nov 2024 12:49PM UTC
Jobs 1
Files 518
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

26 Nov 2024 12:24PM UTC coverage: 87.342% (+0.04%) from 87.304%
12030532536

push

github

sergepetrenko
box: support asynchronous commit modes for synchronous transactions

To overcome the throughput limitation of synchronous transactions let's
allow to commit them using asynchronous wait modes (2c66624). Such
transactions will have the same consistency guarantees with
`read-confirmed` and `linearizable` isolation levels. Changes made this way
can be observable with the `read-committed` isolation level.

Currently, we return an error when the synchronous queue is full for the
only supported synchronous transaction commit mode, `complete`. However,
following the journal queue waiting logic, let's return an error only for
the `none` commit mode. Otherwise, we will wait for space in the
synchronous queue.

Asynchronously committed synchronous transactions will not get rolled back
because of `replication_synchronous_timeout`, and subsequent synchronously
committed transactions will not roll back their asynchronously committed
predecessors on timeout.

Closes #10583

@TarantoolBot document
Title: Asynchronous commit modes for synchronous transactions
Product: Tarantool
Since: 3.3
Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_txn_management/commit/
and https://www.tarantool.io/ru/doc/latest/reference/reference_lua/box_txn_management/atomic/
and https://www.tarantool.io/en/doc/latest/platform/replication/repl_sync/

Some users may want to overcome the throughput limitation of synchronous
transactions and commit them using asynchronous wait modes (2c66624). This
will allow them to get the same consistency guarantees with
`read-confirmed` and `linearizable` isolation levels without paying the
throughput penalty. Changes committed this way will be visible with the
`read-committed` isolation level.

Asynchronously committed synchronous transactions will not get rolled back
because of `replication_synchronous_timeout`, and subsequent synchronously
committed transactions will not rollback their asynchronously committed
predecessors on timeout.

69479 of 123316 branches covered (56.34%)

22 of 24 new or added lines in 2 files covered. (91.67%)

50 existing lines in 12 files now uncovered.

102428 of 117272 relevant lines covered (87.34%)

2713100.17 hits per line

Jobs
ID Job ID Ran Files Coverage
1 12030532536.1 26 Nov 2024 12:49PM UTC 0
87.34
GitHub Action Run
Source Files on build 12030532536
Detailed source file information is not available for this build.
  • Back to Repo
  • 2a401a6a on github
  • Prev Build on master (#12027993015)
  • Next Build on master (#12031059841)
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