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 usinglisten
andbootstrap_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 withcheckpoint_interval
enabled (gh-9820). - Fixed a bug when the sizes of
*.xlog
files created before the server restart
were not taken into account during thecheckpoint_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 withER_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 between0x80
and0xff
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
namedmemprof.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"
.