github tarantool/tarantool 2.11.3

latest releases: 3.0.3-entrypoint, 2.11.4-entrypoint
26 days ago

2.11.3

Date: 2024-04-17
Tag: 2.11.3

Overview

2.11.3 is the next stable release in the long-term support (LTS)
version
release_policy 2.11.x release series.

The label "stable" means there are 1.10.x-based applications running in
production for quite a while without known crashes, incorrect results or
other showstopper bugs.

This release resolves roughly 54 issues since the 2.11.2 version.

Compatibility

Tarantool 2.11.x is backward compatible with Tarantool 1.10.x in 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.11.x series.

Bugs fixed

Core

  • Fixed a bug when the assertion in box_wait_limbo_acked would fail. The
    assertion is that the lsn of the last entry in limbo is always positive after
    wal_sync. Before the patch, if the replication_synchro_quorum was set too
    high on the replica, it would never be reached. After the timeout was
    triggered, the user received a TimedOut error. If the quorum was greater
    than or equal to the number of instances in the replica set, the program
    immediately stopped with a segmentation fault (gh-9235).
  • Fixed a bug when the assertion in box_promote_qsync would fail in the
    debug build mode. The assertion is that at the moment when box_promote_qsync
    is called, no other promote is being executed. It turned out that this
    assertion is basically incorrect. In the release build mode, this incorrect
    assumption could potentially lead to writing 2 PROMOTE entries in the same
    term (gh-9263).
  • The error messages are no longer stripped (gh-4975).
  • Increased the maximum number of tuples in a hash index from 2147483648 (2^31)
    to 4294967288 (2^32 - 8) (gh-9864).
  • Fixed a bug that resulted in a crash when both MVCC and index with the exclude_null part were used (gh-9954).
  • Now box.cfg() correctly interprets the TT_LISTEN and TT_REPLICATION
    environment variables with query parameters (gh-9539).
  • The exclude_null option is now supported by functional indexes (gh-9732).

Replication

  • Now transactions are not rolled back if the transaction fiber is
    cancelled when waiting for quorum from replicas (gh-9480).
  • Fixed a bug when replication broke with ER_PROTOCOL when transactions ended
    with a local space operation (gh-9491).
  • Fixed an issue when it was possible to use the
    box_collect_confirmed_vclock stack after return (gh-9505).

LuaJIT

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

  • Fixed CSE of a REF_BASE operand across IR_RETF.
  • Fixed the fold rule for BUFHDR APPEND.
  • Fixed HREFK, ALOAD, HLOAD, forwarding vs. table.clear().
  • Fixed snapshot PC when linking to BC_JLOOP that was a BC_RET*.
  • Fixed dangling references to CType.
  • Ensured returned string is alive in ffi.typeinfo().
  • Fixed the missing initialization of the internal structure, leading to a
    crash when recording a trace with an allocation of cdata.
  • Limited exponent range in number parsing by 2^20.
  • Fixed double-emitting of IR_NEWREF when restoring sunk values for side
    trace (gh-7937).
  • Fixed the IR_HREFK optimization for huge tables.
  • Fixed recording of the __concat metamethod.
  • Fixed the embedded bytecode loader.
  • Improved error reporting on stack overflow.
  • Fixed assertion on the Lua stack overflow for a stitched trace.
  • Fixed snapshoting of functions for non-base frames.
  • Fixed a crash in the allocator during sysprof profiling (gh-8140).
  • No side traces are recorded now after disabling the JIT via jit.off().
  • Fixed handling of instable boolean types in TDUP load forwarding.
  • Fixed a crash during the restoration of the sunk TNEW with a huge array
    part.
  • Fixed stack-buffer-overflow for string.format() with %g modifier and
    length modifier.
  • Fixed recording of setmetatable() with nil as the second argument.
  • Fixed recording of select() in case with negative first argument.
  • Fixed use-def analysis for child upvalues.
  • Added the cc file type for saving bytecode.
  • Fixed C file generation in jit.bcsave.
  • Fixed trace error handling during trace stitching.
  • Fixed recording of the __concat metamethod for vararg or protected frames.
  • Fixed recording of a side trace returning to a lower frame with a maximum
    possible frame size.
  • Fixed debug.setmetatable() and lua_setmetatable() with enabled
    jit.dump().
  • Fixed recording of side traces with a down-recursion.

Lua

  • Fixed a memory leak in error_object:set_prev() (gh-9694).
  • Fixed alias detection in the YAML encoder (gh-8350, gh-8310, gh-8321).
  • Fixed a regression that caused the wait_connected = false option of
    net_box.connect to yield, despite being required to be fully asynchronous
    (gh-9489).
  • Fixed a bug in net.box when a connection with asynchronous requests could
    get garbage collected (gh-9629).
  • Fixed an inconsistency between the documented on_disconnect trigger behavior
    of net.box connections when an error is thrown and the actual behavior
    (gh-9717).
  • Fixed a bug in the on_disconnect trigger of net.box connections that
    caused Tarantool server to hang indefinitely when an error was thrown from the
    trigger (gh-9797).
  • The on_schema_reload trigger behavior of net.box connections when an
    error is thrown is now consistent with the behavior of the on_disconnect
    trigger (gh-9679).
  • Fixed a bug when a net.box connection remained active after being closed
    from the connection's on_connect trigger (gh-9827).

HTTP client

  • Fixed a crash on garbage collection of httpc objects (gh-9283).
  • Fixed a crash due to a race in GC finalizers (gh-9346).
  • Fixed behaviour of GC-finalizer of HTTP client Lua object when chunked HTTP
    request is alive. (gh-9453).

SQL

  • Fixed a memory leak when an error occurred in SELECT with a GROUP BY
    expression (gh-8535, ghs-125).
  • Fixed a crash when a decimal literal representing a decimal number greater
    than or equal to 10^38 was parsed in SQL (gh-9469).

Datetime

  • Fixed a bug in strptime when the assertion was triggered (gh-8525).

Build

  • Updated libcurl to version 8.5.0.

Testing

  • Bumped metrics submodule to commit 3370f85 to fix compatibility with
    luatest commit d985997.

Tools

  • Added the --human-readable option for the misc.memprof parser to print
    sizes like 1KiB, 234MiB, 2GiB, etc.
    Made the errors from the profilers more user-friendly (gh-9217).

Don't miss a new tarantool release

NewReleases is sending notifications on new releases.