github tarantool/tarantool 2.11.7

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

2.11.7

Date: 2025-05-29
Tag: 2.11.7

Overview

2.x is the old stable release series. Users are encouraged to update to the
latest 3.x release.

This is a bugfix release. It resolves 28 issues since the previous
version.

Please, consider the full 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 that an update 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.

Bugs fixed

Core

  • Fixed a bug where passwords are leaked into logs
    when using listen and bootstrap_leader options (gh-10653).
  • Fixed a bug when cancelling a fiber waiting in WAL queue corrupted the
    WAL (gh-11078).
  • Fixed a bug when the timestamps of snapshots created before the server restart
    were not taken into account with checkpoint_interval enabled (gh-9820).
  • Fixed a bug when the sizes of *.xlog files created before the server restart
    were not taken into account during the checkpoint_wal_threshold exceedance
    checks (gh-9811).
  • Fixed a bug when transactions in the WAL queue were not rolled back on WAL
    error (gh-11179).
  • Fixed a bug when WAL queue was not flushed properly. In particular
    when building an index of a vinyl space. In the latter case it could lead to
    the new index missing data from transactions in the queue (gh-11118, gh-11119).
  • Changed the error code of box.error.INVALID_DEC. It was mistakenly assigned the
    value 279. Now it is 277.
  • Fixed a bug where tuples with JSON paths in the sequential
    field order could not be found in a hash index (gh-11014).

Memtx

  • Tarantool allowed to create multikey and functional 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, gh-11099).
  • Fixed a bug that caused memtx MVCC to miss conflicts over key definitions
    that used the number type or collations (gh-10159, gh-11292).

Vinyl

  • Fixed a bug when the garbage collector purged run files left after a dropped
    space without waiting for compaction completion. The bug could result in
    a compaction failure with a "No such file or directory" error (gh-11163).
  • Fixed a bug when space:truncate() failed with ER_TRANSACTION_YIELD
    (gh-11249).
  • Fixed a bug in the tuple cache when a transaction operating in a read view
    could skip a tuple deleted after the read view creation (gh-11294).

Replication

  • Fixed a crash which could happen during relay thread shutdown (gh-9920).

Lua

  • Fixed decoding of escape sequences for single-byte character codes from YAML.
    Before the fix, single-byte character codes between 0x80 and 0xff would
    be erroneously converted to two-byte UTF-8 code points, for example, \x80
    would be decoded as \uC280 (gh-8782).

LuaJIT

Backported patches from the vanilla LuaJIT trunk (gh-11055). The following
issues were fixed as part of this activity:

  • Fixed closing the report file without samples for jit.p.
  • Fixed the OOM error handling while recording the __concat metamethod.
  • Fixed the second trace.flush() call for an already flushed trace.
  • Fixed bit op coercion for shifts in DUALNUM builds.
  • Fixed IR_ABC hoisting.
  • Returned the rehashing of the cdata finalizer table at the end of the GC
    cycle to avoid memory overgrowing for cdata-intensive workloads.

SQL

  • Fixed undefined behavior of SQL when using positive MP_INT numbers in
    MessagePack anywhere (bound arguments, tuples, C functions) (gh-10132).

Tools

Fixed a bunch of bugs in LuaJIT profilers:

  • misc.sysprof.stop() returns a correct error message if the profiler is not
    running.
  • misc.sysprof.start() now raises an error if an argument has an incorrect
    type.

Made LuaJIT profilers more user-friendly:

  • misc.memprof.start() without arguments writes the dump into the default file
    named memprof.bin instead of raising an error.
  • misc.sysprof.start() provides more verbose errors in case of profiler
    misuse.
  • If the profiler is disabled for the target platform, it is now mentioned in
    the error message explicitly.
  • misc.sysprof.start() without arguments starts the profiler in the default
    mode "D".

Don't miss a new tarantool release

NewReleases is sending notifications on new releases.