github tarantool/tarantool 1.10.11
1.10.11 LTS

latest releases: 3.3.6-entrypoint, 3.5.3-entrypoint, 3.6.3...
4 years ago

Date: 2021-08-19

Tag: 1.10.11-0-gf0b0e7e

Overview

1.10.11 is the next stable release in the long-term support (LTS)
version
release_policy 1.10.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 introduces two improvements and resolves roughly 18
issues since the 1.10.10 version.

Compatibility

Tarantool 1.10.11 is backward compatible with Tarantool 1.9.x in binary data
layout, client-server protocol and replication protocol.

Upgrade using the box.schema.upgrade() procedure to unlock
all the new features of the 1.10.x series.

New and updated features

LuaJIT

  • Introduced support for LJ_DUALNUM mode in luajit-gdb.py (gh-6224).

Build

  • Fedora 34 builds are now supported. (gh-6074)

  • Fedora 28 and 29 builds are no longer supported.

Bugs fixed

Core

  • [Breaking change] fiber.wakeup() in Lua and fiber_wakeup() in C became
    NOP on the currently running fiber. Previously they allowed to "ignore" the
    next yield or sleep, which resulted in unexpected spurious wake-ups.
    Calling these functions right before fiber.create() in Lua or fiber_start() in C
    could lead to a crash (in debug build) or undefined behaviour (in release build). (gh-6043)

    There was a single use case for the previous behaviour: rescheduling in the same event loop
    iteration, which is not the same as fiber.sleep(0) in Lua and
    fiber_sleep(0) in C. This could be done in the following way:

    in C:

    fiber_wakeup(fiber_self());
    fiber_yield();

    and in Lua:

    fiber.self():wakeup()
    fiber.yield()

    To get the same effect in C, one can now use fiber_reschedule().
    In Lua it is now impossible to directly reschedule the current fiber in the same event loop
    iteration.
    There is a way to reschedule self through a second fiber, but we strongly discourage doing so:

    -- don't use this code
    local self = fiber.self()
    fiber.new(function() self:wakeup() end)
    fiber.sleep(0)
  • Fixed memory leak on each box.on_commit() and box.on_rollback() (gh-6025).

  • Fixed invalid results produced by json module's encode function when it
    was used from the Lua garbage collector.
    For instance, this could happen in functions used as ffi.gc(). (gh-6050)

  • Fixed a bug when iterators became invalid (up to crash) after schema change (gh-6147).

  • Fixed crash in case of reloading a compiled module when the
    new module lacks some of functions which were present in the
    former code. In turn this event triggers a fallback procedure
    where we restore old functions but instead of restoring each
    function we process a sole entry only leading to the crash
    later when these restored functions are called (gh-5968).

  • Fixed console client connection breakage if request times out (gh-6249).

  • Added missing broadcast to net.box.future:discard() so that now fibers
    waiting for a request result are woken up when the request is discarded
    (gh-6250).

Vinyl

  • Fix possible keys divergence during secondary index build which might
    lead to missing tuples in it (gh-6045).

  • Fix crash which may occur while switching read_only mode due to duplicating
    transaction in tx writer list (gh-5934).

  • Fixed a race between Vinyl garbage collection and compaction resulting in
    broken vylog and recovery (gh-5436).

Replication

  • Fix replication stopping occasionally with ER_INVALID_MSGPACK when replica
    is under high load (gh-4040).

LuaJIT

  • Fixed optimization for single-char strings in IR_BUFPUT assembly routine.

  • Fixed slots alignment in lj-stack command output when LJ_GC64 is enabled
    (gh-5876).

  • Fixed dummy frame unwinding in lj-stack command.

  • Fixed detection of inconsistent renames even in the presence of sunk values
    (gh-4252, gh-5049, gh-5118).

  • Fixed the order VM registers are allocated by LuaJIT frontend in case of
    BC_ISGE and BC_ISGT (gh-6227).

Lua

  • When error is raised during encoding call results, auxiliary lightuserdata
    value is not removed from the main Lua coroutine stack. Prior to the fix it
    leads to undefined behaviour during the next usage of this Lua coroutine
    (gh-4617).

  • Fixed Lua C API misuse, when the error is raised during call results encoding
    on unprotected coroutine and expected to be catched on the different one, that
    is protected (gh-6248).

Triggers

  • Fixed possibility crash in case when trigger removes itself.
    Fixed possibility crash in case when someone destroy trigger,
    when it's yield (gh-6266).

Don't miss a new tarantool release

NewReleases is sending notifications on new releases.