github tarantool/tarantool 3.4.0

latest releases: 3.5.0, 3.6.0-entrypoint, 3.5.1-entrypoint...
5 months ago

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) and pp (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 to box.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 the box.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 the default
    annotation for a composite type.
  • <schema object>:validate() now takes into account the unique_items annotation.
    Also, schema.set() now accepts a user-provided validate 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, and is_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 before box.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 the failover.execute call.

Metrics

  • Updated the metrics submodule to 1.3.0.

    • Fixed read-only status detection in the replication metrics
      (gh-495).

    • Added a new cpu_extended metrics category, enabled by default
      (gh-498).

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 option txn_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.

Don't miss a new tarantool release

NewReleases is sending notifications on new releases.