Released on 2021-04-21.
- Release v. 2.6.3.
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.
Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary data layout, client-server protocol, and replication protocol.
box.schema.upgrade() procedure to unlock all the new
features of the 2.x series.
- Introduced the concept of WAL queue and the new configuration option
wal_queue_max_size, measured in bytes. The default value is 16 Mb. The option helps limit the pace at which replica submits new transactions to the WAL. The limit is checked every time a transaction from the master is submitted to the replica’s WAL. The space taken by the transaction is considered empty once it’s successfully written (gh-5536).
box.ctl.promote()function and the concept of manual elections (enabled with
Once the instance is in the
manualelection mode, it acts like a
votermost of the time, but may trigger elections and become a leader when
box.ctl.promote()is called. When
election_mode ~= 'manual',
box.ctl.clear_synchro_queue(), which is now deprecated.
- Tarantool build infrastructure now requires CMake version 3.1 or later.
- Binary packages for Fedora 33 are now available (gh-5502) .
- Binary packages for CentOS 6 and Debian Jessie won’t be published since this version.
- RPM and DEB packages no longer have the
autotoolsdependency (follows up gh-4968).
- Regular testing on MacOS 10.13 has been disabled, effectively stopping the support of this version.
- The built-in
zstdis upgraded from v1.3.3 to v1.4.8 (part of gh-5502).
- SMTP and SMTPS protocols are now enabled in the bundled
libcurlheaders are now shipped to system path
libcurlis included as a bundled library or in a static build (gh-4559).
- Tarantool CI/CD has migrated to GitHub Actions (gh-5662).
- Single node Jepsen testing now runs on per-push basis (gh-5736).
- A self-sufficient LuaJIT testing environment has been implemented. As a result, LuaJIT build system is now partially ported to CMake and all testing machinery is enclosed within the tarantool/luajit repository (gh-4862, gh-5470).
- Python 3 is now the default in the test infrastructure (gh-5652).
lbox_ctl_is_recovery_finished()function no longer returns
truewhen recovery is still in progress.
- A memory corruption bug has been fixed in netbox.
The memory of a struct error which is still used will no longer be freed prematurely
because of the wrong order of
- Relay can no longer time out while a replica is joining or syncing with the master. (gh-5762).
- An issue with missing «path» value of index schema fetched by netbox has been fixed (gh-5451).
- Extensive usage of
uuidmodules with debug log level no longer leads to crashes or corrupted results of the functions from these modules. Same problem is resolved for using these modules from the callbacks passed to
ffi.gc(), and for some functions from the modules
- The new
wal_cleanup_delayoption can prevent early cleanup of
*.xlogfiles, needed by replicas. Such cleanup used to result in a
- Appliers will no longer cause errors with
Unknown request type 40during a final join when the master has synchronous spaces (gh-5566).
- Added memtx MVCC tracking of read gaps which fixes the problem of phantom reads (gh-5628).
- Fixed the wrong result of using
space:count()with memtx MVCC (gh-5972).
- Fixed the dirty read after restart while using MVCC with synchronous replication (gh-5973).
- Fixed an issue with an applier hanging on a replica after failing to process
ROLLBACKmessage coming from a master.
- Fixed the issue where master did not send some rows to an anonymous replica which had fallen behind and was trying to register.
- Fixed the bug when a synchronous transaction could be confirmed and
visible on a replica, but then not confirmed or invisible again after
restart. It was more likely to happen on memtx spaces with
- Fixed the recovery of a rolled back multi-statement synchronous transaction which could lead to the transaction being applied partially, and to recovery errors. It happened in case the transaction worked with non-sync spaces (gh-5874).
- Fixed a bug in synchronous replication when rolled back transactions could reappear after reconnecting a sufficiently old instance (gh-5445).
- Fixed an issue where
<swim_instance>:broadcast()did not work on non-local addresses and spammed «Permission denied» errors to the log. After instance termination it could return a non-0 exit code even if there were no errors in the script, and then spam the same error again (gh-5864).
- Fixed the crash on attempts to call
swim:member_by_uuid()with no arguments or with
- Fixed the crash on attempts to pass an object of a wrong type to
__serializemethod of a swim member in Lua (gh-5952).
- Fixed the -e option, when
tarantoolused to enter the interactive mode when stdin is a TTY. Now,
tarantool -e 'print"Hello"'doesn’t enter the interactive mode, but just prints «Hello» and exits (gh-5040).
- Fixed a leak of a tuple object in
key_def:compare_with_key(tuple, key), which had occurred when the serialization of the key failed (gh-5388).
- The string received by a user-defined C or Lua function will no longer be
different from the string passed to the function. This could happen
when the string passed from SQL had contained
DECIMALfield will not cause a SEGMENTATION FAULT anymore (gh-5011, gh-5704, gh-5913).
- Fixed an issue with wrong results of
GROUP BYwhich occurred when one of the selected values was
VARBINARYand not directly obtained from the space (gh-5890).
- Fixed a double
gc_cdatanumdecrementing in LuaJIT platform metrics which occurred when a finalizer was set for a
Fix building on FreeBSD (incomplete definition of type
struct sockaddr) (gh-5748).
The already downloaded static build dependencies will not be fetched repeatedly (gh-5761).
force_recoveryoption now deletes vylog files which are newer than the snapshot. It helps an instance recover after incidents during a checkpoint (gh-5823).
libcurlconfiguring when Tarantool itself has been configured with
cmake3command and there was no
cmakecommand in the
This affects building Tarantool from sources with bundled
libcurl(it is the default mode).