Skip to content

2.10.8

Compare
Choose a tag to compare
@kyukhin kyukhin released this 14 Sep 09:46
· 2401 commits to master since this release

Date: 2023-09-14
Tag: 2.10.8

Overview

2.10.8 is the ninth stable version of the 2.10 release
series. It introduces 5 improvements and resolves 28 bugs since
2.10.7.

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.

Functionality added or changed

Box

  • The maximum length of box.cfg{} string parameters is now 512 instead of 256.

Test

Fuzz

  • LuaJIT now can be fuzzed using grammar-based fuzzer (gh-4823).

Build

  • Hardening against memory corruption attacks is now enabled by default on
    FreeBSD (gh-7536).
  • Added the CMake option FIBER_STACK_SIZE to set the default fiber stack size.
  • Updated libcurl to version 8.3.0.

Bugs fixed

Core

  • Fixed a bug when Tarantool failed to decode a request containing an unknown
    IPROTO key. The bug resulted in broken connectivity between Tarantool 2.10
    and 2.11 (gh-8745).
  • Fixed a bug causing the ER_CURSOR_NO_TRANSACTION failure for transactions
    on synchronous spaces when the on_commit/on_rollback triggers are set
    (gh-8505).
  • Fixed a bug causing the effective session and user are not propagated to
    box.on_commit and box.on_rollback trigger callbacks when transaction
    is synchronous (gh-8742).
  • Fixed a crash that could happen when Tarantool is started in the
    background mode
    (gh-6128).
  • Fixed a bug when MVCC sometimes lost gap record (gh-8326).
  • Fixed a bug when MVCC rollback of prepared statement could break internal
    invariants (gh-8648).
  • Now MVCC engine automatically aborts a transaction if it reads changes
    of a prepared transaction and this transaction is aborted (gh-8654).
  • Fixed a bug that caused writing incorrect values into the stream_id field
    of xlog headers (gh-8783).
  • Fixed a bug when a space that is referenced by a foreign key could not
    be truncated even if the referring space was empty (gh-8946).
  • Fixed a crash that could happen when Tarantool is compiled by clang
    version 15 and above with enabled AddressSanitizer
    (tarantool/tarantool-qa#321).
  • Fixed a use-after-free bug in iproto server code (gh-9037).
  • Fixed a heap-buffer-overflow bug in fiber creation code (gh-9026).

Memtx

  • Fixed a heap-use-after-free bug in the transaction manager, which could occur
    when performing a DDL operation concurrently with a transaction on the same
    space (gh-8781).

Vinyl

  • Fixed a heap-use-after-free bug in the Vinyl read iterator caused by a race
    between a disk read and a memory dump task. The bug could lead to a crash or
    an invalid query result (gh-8852).

Replication

  • Fixed a possible failure to promote the desired node by box.ctl.promote() on
    a cluster with nodes configured with election_mode = "candidate" (gh-8497).
  • Fixed nodes configured with election_mode = 'candidate' spuriously detecting
    a split-vote when another candidate should win with exactly a quorum of votes
    for it (gh-8698).

LuaJIT

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

  • Fixed canonicalization of +-0.0 keys for IR_NEWREF.

  • Fixed result truncation for bit.rol on x86_64 platforms.

  • Fixed lua_yield() invocation inside C hooks.

  • Fixed memory chunk allocation beyond the memory limit.

  • Fixed TNEW load forwarding with instable types.

  • Fixed use-def analysis for BC_VARG, BC_FUNCV.
    Backported patches from the vanilla LuaJIT trunk (gh-8825). The following issues
    were fixed as part of this activity:

  • Fixed BC_UCLO insertion for returns.

  • Fixed recording of BC_VARG with unused vararg values.

  • Initialization instructions on trace are now emitted only for the first
    member of a union.

  • 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.

Lua

  • Fixed the xlog reader Lua module to show unknown row header fields. Before
    this change the xlog reader silently skipped them.

Netbox

  • Fixed a heap-use-after-free bug in the function creating a tuple format Lua
    object for net.box (gh-8889).

Box

  • Fixed the memory leaks caused by the multi-statement transaction errors in the
    space index building and the space format checking operations (gh-8773).
  • Fixed a bug in the box console implementation because of
    which the language parameter was shared between connected
    clients (gh-8817).
  • Fixed an invalid memory access in a corner case of a specialized comparison
    function (gh-8899).

Console

  • Fixed console ignoring -i flag in case stdin is not a tty (gh-5064).

Datetime

  • Fixed a bug raising a false positive error when creating new intervals with
    range boundary values (gh-8878).
  • Fixed a bug with buffer overflow in tnt_strptime (gh-8502).

Http

  • Fixed a streaming connection stuck if etcd is stopped
    unexpectedly (gh-9086).

Msgpack

  • Fixed decoding datetime intervals with fields larger than possible int32
    values (gh-8887).