Skip to content

2.11.2

Compare
Choose a tag to compare
@sergos sergos released this 07 Dec 14:06
· 1324 commits to master since this release

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 into box.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 than 1e38. 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 with box.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 an on_replace or before_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 and math.pow() function inconsistencies.

  • Fixed parsing with predicting next() and pairs().

  • 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 (for x = -0 the result
    should be 0).

  • Fixed output for IR_CONV in jit.dump().

  • Fixed math.min()/math.max() inconsistencies for x86/x86_64 architectures
    when called with a NaN argument or -0 and 0.

  • 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
    during CREATE TABLE (gh-9229).
  • The EXISTS predicate no longer requires LIMIT 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(),
    and box.info.sql() are called before box.cfg{} (gh-9173).
  • Added a c_func_iproto_multireturn option to the compat 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 if os.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
    flag ENABLE_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).