2.11.2
Date: 2023-12-07
Tag: 2.11.2
Overview
2.11.2 is the 3rd stable version of the 2.11 release
series. It resolves 38 bugs since 2.11.1.
The "stable" label means that we have all planned features implemented and we
see no high-impact issues. However, if you encounter an issue, feel free to
report it on GitHub.
Compatibility
Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary data
layout, client-server protocol, and replication protocol.
Please upgrade using the box.schema.upgrade()
procedure to unlock
all the new features of the 2.x series.
Bugs fixed
Core
- Fixed a crash that could happen when inserting an index definition with an
empty parts list directly intobox.space._index
(gh-8688). - Fixed the memory leak on unpacking an invalid MsgPack error extension
(gh-8921). - Fixed a use-after-free bug in fiber recycling code (gh-9020).
- Fixed a use-after-free bug in iproto server code (gh-9037).
- Fixed a heap-buffer-overflow bug in fiber creation code (gh-9026).
- Eliminated implicit conversion of unprintable utf-8 strings to binary blobs
when encoded in YAML. Now unprintable characters are encoded as escaped utf-8
code points, for example,\x80
or\u200B
(gh-8756). - An error is no longer raised on an attempt to print a dead fiber (gh-4265).
- Fixed a possible out-of-bound write in debug build on unpacking a MsgPack
error extension (gh-9098). - Fixed a bug that caused a replication error after calling
box.schema.downgrade
(gh-9049). - Fixed a possible crash when unpacking an invalid MsgPack error extension
(gh-9136). - Fixed a wrong assertion in index comparators when comparing decimals with
floats greater than1e38
. The error was present only in the debug build.
Despite the failing assertion, the behavior after the assertion was correct
(gh-8472). - Fixed a bug that could result in the incorrect
space:bsize()
when altering
a primary index concurrently with DML operations (gh-9247). - Fixed a crash that happened while printing the stack trace on a stack
overflow bug (gh-9222). - Fixed the behavior of
log.cfg{modules = ...}
. Now, instead of merging the
new log modules configuration with the old one, it completely overwrites the
current configuration, which is consistent withbox.cfg{log_modules = ...}
(gh-7962). - Fixed a bug in the network buffer that could result in a crash when there are
a lot of pending requests (gh-9218) - Fixed a potential data corruption when the number of tuples in a hash index
is more than 2147483648 (gh-3594). - Fixed graceful shutdown break on init script exit (gh-9411).
- Fixed potential use-after-free on Tarantool shutdown with lingering
fiber join (gh-9406). - Fixed incorrect calculation of requests in progress in case of iproto
override fallback (gh-9345).
Replication
- Fixed a false-positive split-brain in a replica set on the first
promotion after an upgrade from versions before 2.10.1 (gh-8996). - Fixed replicas writing corrupted xlogs when appending data to a local space
from anon_replace
orbefore_replace
trigger on a global replicated space.
Such xlogs were unrecoverable and caused other nodes to break replication with
the replica (gh-8746, gh-8958). - Fixed a false-positive split-brain error when an old synchronous transaction
queue owner confirmed the same transactions which were already confirmed by
the new queue owner, or rolled back the same transactions which were rolled
back by the new queue owner (gh-9138).
LuaJIT
Backported patches from the vanilla LuaJIT trunk (gh-8825). The following issues
were fixed as part of this activity:
-
Prevent integer overflow while parsing long strings.
-
Fixed various
^
operator andmath.pow()
function inconsistencies. -
Fixed parsing with predicting
next()
andpairs()
. -
Fixed binary number literal parsing. Parsing of binary number with a zero
fractional part raises error too now. -
Fixed load forwarding optimization applied after table rehashing.
-
Fixed recording of the
BC_TSETM
. -
Fixed the panic routine when
mprotect
fails to change flags for mcode area. -
Fixed handling of instable types in TNEW/TDUP load forwarding.
-
Handled table unsinking in the presence of
IRFL_TAB_NOMM
. -
Fixed a bug when an error could be raised on the non-currently executed
coroutine (gh-6323).
Backported patches from the vanilla LuaJIT trunk (gh-9145). The following issues
were fixed as part of this activity: -
Fixed error handling after return from a child coroutine.
-
Fixed clashing of addresses in the
__call
metamethod return dispatch (again). -
Fixed the assembling for the head of the side trace (gh-8767).
-
Prevented compilation of
__concat
methamethod with tailcall to fast
function. -
Fixed buffer overflow in parsing the
#pragma
directive via FFI (gh-9339).
Now the error is thrown when more than 6 alignment settings are pushed on the
internal stack. -
Fixed incorrect fold rule for
x - (-0)
on trace (forx = -0
the result
should be0
). -
Fixed output for
IR_CONV
injit.dump()
. -
Fixed
math.min()
/math.max()
inconsistencies for x86/x86_64 architectures
when called with a NaN argument or-0
and0
. -
Fixed
math.ceil(x)
result sign for -1 < x < 0.5. -
Errors from gc finalizers are now printed instead of being rethrown.
-
Fixed
lua_concat()
. -
Fixed possible storing of NaN keys to table on trace.
-
Fixed ABC FOLD optimization with constants.
-
Marked
CONV
as non-weak, to prevent invalid control flow path choice. -
Fixed sysprof crash during stack unwinding for FFUNC (gh-8594).
Lua
- An error from a serializer function for cdata and userdata is not ignored now
(gh-9396).
Http client
- Fixed a streaming connection stuck if etcd is stopped
unexpectedly (gh-9086).
SQL
- Fixed a memory leak in a parser for a column's default rule (gh-9159).
- Fixed assertion in a debug build when a collation was added after an index
with more than one field (gh-9229). - Fixed a bug that in some cases would not assign collations to an index created
duringCREATE TABLE
(gh-9229). - The
EXISTS
predicate no longer requiresLIMIT 1
to work correctly if more
than one row is returned in the subselect (gh-8676).
Box
- The maximum length of
box.cfg{}
string parameters is now 512 to support a
lengthy args, such as list of audit events (ghe-523). - Fixed crashes if
box.info.memory()
,box.info.gc()
,box.info.vinyl()
,
andbox.info.sql()
are called beforebox.cfg{}
(gh-9173). - Added a
c_func_iproto_multireturn
option to thecompat
module. The new
behavior drops an additional array that wraps multiple results returned via
iproto (gh-4799). - Fixed a bug that allows downgrading from a schema version more recent than
a Tarantool version (gh-9182). - Fixed a bug when
on_shutdown
triggers weren't run ifos.exit()
was
called from-e
command-line option (gh-9266).
Net.box
- It is now possible to call stored Lua functions and C module functions with
require('net.box').self:call()
(gh-9131).
Misc
- Updated luarocks version to 3.9.2 to address rockspec security issues (gh-6587).
Testing
- Added a new flag
tarantool.build.asan
that shows whether build
flagENABLE_ASAN
is set. The flag is intended to ease tests
backporting from the master branch.
Tools
Debugger
- Introduced readline support to tarantool debugger (gh-7738).