Date: 2025-04-15
Tag: 3.4.0
Overview
Tarantool 3.x is the recommended release series. Users of Tarantool 2.11 are
encouraged to update to the latest 3.x release.
This release introduces 20 improvements and resolves 4
bugs since 3.3.2.
Notable changes are:
- Cross-engine transactions are now possible between memtx and vinyl spaces.
- Functional indexes are now supported by memtx MVCC.
- Forbade creating multikey indexes when memtx MVCC is enabled because they are
not supported in this scenario. - Added 'native'
bootstrap_strategy
to replicaset config.
Please, consider the complete list of user-visible changes below.
Compatibility
Tarantool 2.x and 3.x are compatible in the binary data layout, client-server
protocol, and replication protocol. It means upgrade may be performed
with zero downtime for read requests and the-order-of-network-lag downtime for
write requests.
Please, follow the upgrade procedure to plan your update actions.
Users of Tarantool 2.x may be interested in the compat options that
allow them to imitate some 2.x behavior. This allows to perform application code
updates step-by-step, not all-at-once.
Functionality added or changed
Memtx
- Added support for functional indexes in MVCC transaction manager.
Vinyl
- Added support for the
np
(next prefix) andpp
(previous prefix) iterators
(gh-10647).
Replication
- Allowed to call
box.ctl.make_bootstrap_leader()
before the first
box.cfg()
call in the'supervised'
bootstrap strategy (gh-10858). - Added the
graceful
option tobox.ctl.make_bootstrap_leader()
(gh-11272). - Allow to bootstrap the initial database in read-only mode in the 'supervised'
bootstrap strategy. - Now
box.cfg({bootstrap_strategy = 'supervised'})
without upstreams waits
for thebox.ctl.make_bootstrap_leader(<...>)
command till the replication
connect timeout instead of an immediate fail.
Lua
- Built-in logger now encodes table arguments in the JSON format (gh-8611).
Core
- Removed the warning logged by potentially long
index.select()
calls.
The warning became useless after the introduction of the fiber slice limit. - Added support for cross-engine transactions. It is now possible to mix
statements for different storage engines in the same transaction. Note
that to mix memtx and vinyl statements, the configuration option
database.memtx_use_mvcc_engine
must be enabled (gh-1803). - Introduced the
index:quantile()
function for finding a quantile key in
an indexed data range. The function is implemented by memtx and vinyl tree
indexes (gh-11111).
Config
- Added the
replication.reconnect_timeout
option. The option shows
the timeout in seconds between attempts to reconnect to a master
in case of connection failure (gh-11115, part of gh-10059). - The
<schema object>:map()
method now supports transformation of a composite
type (gh-10756).
It also makes<schema object>:apply_default()
support thedefault
annotation for a composite type. <schema object>:validate()
now takes into account theunique_items
annotation.
Also,schema.set()
now accepts a user-providedvalidate
annotation.- Now Tarantool instances configured in the supervised failover mode don't
choose learner instances as a bootstrap leader (gh-10842). - Now the
stop
callback for the roles is called during graceful shutdown. The
stop
callbacks are called in the reverse order of roles startup (gh-10795). - Added the
has_role
,is_router
, andis_storage
methods to the
config
module to check if a role is enabled on an instance (gh-11288). - Introduced an
early_load: true
tag for roles and scripts. When set, it makes
Tarantool load the role or execute the script beforebox.cfg
(gh-10182). - Added
replication.bootstrap_strategy
=native
(gh-10857). - Now, when the instance is configured with bootstrap strategy
supervised
or
native
and uses a supervised failover coordinator the guest user is
automatically granted privileges for performing the initial bootstrap
using thefailover.execute
call.
Metrics
-
Updated the metrics submodule to 1.3.0.
Bugs fixed
Core
- Changed the level of the "N messages suppressed" warning logged when
Tarantool processes snapshot rows at a high rate from "warn" to "info".
Memtx
- Tarantool allowed to create multikey indexes with memtx MVCC enabled,
but they were not supported. This led to a crash or a panic. Now
Tarantool raises an error when one tries to create an index of the kind
with memtx MVCC enabled (gh-6385).
Replication
- Fixed a bug when with the new
replication_synchro_timeout
behavior
(compat.replication_synchro_timeout = 'new'
) a user fiber could hang
indefinitely if for some reason the quorum could not respond with an ACK
to a synchronous transaction.
A new configuration optiontxn_synchro_timeout
has been introduced
for this purpose.
Config
- Now,
replication.bootstrap_strategy
can't be specified in the instance scope
since it only makes sense to specify the option for at least the whole
replicaset.