From 060684e218d7b60e0bf6926c8aa73453dc3bcdbf Mon Sep 17 00:00:00 2001 From: Kseniia Antonova Date: Fri, 23 Apr 2021 15:24:17 +0300 Subject: [PATCH 1/2] Add new pages under doc/release, update table with versions --- doc/release.rst | 21 ++- doc/release/1.10.10.rst | 94 +++++++++++++ doc/release/2.6.3.rst | 202 ++++++++++++++++++++++++++++ doc/release/2.7.2.rst | 202 ++++++++++++++++++++++++++++ doc/release/2.8.1.rst | 283 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 797 insertions(+), 5 deletions(-) create mode 100644 doc/release/1.10.10.rst create mode 100644 doc/release/2.6.3.rst create mode 100644 doc/release/2.7.2.rst create mode 100644 doc/release/2.8.1.rst diff --git a/doc/release.rst b/doc/release.rst index b3ec95a718..62cc26ee6a 100644 --- a/doc/release.rst +++ b/doc/release.rst @@ -1,4 +1,4 @@ -.. _release_notes: +.. _release_notes: ******************************************************************************** Release notes @@ -25,7 +25,7 @@ Below is the table listing all Tarantool versions starting from 1.10.0 up to the current latest versions. Each link leads to the release notes page of the corresponding version: -.. _release-list: +.. _release-list: .. container:: table @@ -41,15 +41,21 @@ Each link leads to the release notes page of the corresponding version: - Beta - Release + * - 2.8 + - 2.8.0 + - :doc:`2.8.1 ` + - not released yet + * - 2.7 - 2.7.0 - :doc:`2.7.1 ` - - not released yet + - :doc:`2.7.2 ` * - 2.6 - 2.6.0 - :doc:`2.6.1 ` - - :doc:`2.6.2 ` + - :doc:`2.6.2 `, + :doc:`2.6.3 ` * - 2.5 - 2.5.0 @@ -86,7 +92,8 @@ Each link leads to the release notes page of the corresponding version: :doc:`1.10.6 `, :doc:`1.10.7 `, :doc:`1.10.8 `, - :doc:`1.10.9 ` + :doc:`1.10.9 `, + :doc:`1.10.10 ` For smaller feature changes and bug fixes, see closed @@ -104,7 +111,10 @@ Release notes for series before 1.10 are also available: :hidden: release/policy + release/2.8.1 + release/2.7.2 release/2.7.1 + release/2.6.3 release/2.6.2 release/2.6.1 release/2.5.3 @@ -120,6 +130,7 @@ Release notes for series before 1.10 are also available: release/2.2.2 release/2.2.1 release/2.1.2 + release/1.10.10 release/1.10.9 release/1.10.8 release/1.10.7 diff --git a/doc/release/1.10.10.rst b/doc/release/1.10.10.rst new file mode 100644 index 0000000000..aea3a12742 --- /dev/null +++ b/doc/release/1.10.10.rst @@ -0,0 +1,94 @@ +Tarantool 1.10.10 +================= + +Release: :tarantool-release:`1.10.10` + +Date: 2021-04-21 Tag: 1.10.10 + +Overview +-------- + +1.10.10 is the next stable release in the +:doc:`long-term support (LTS) version ` +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 12 improvements and resolves roughly 3 issues +since the 1.10.9 version. + +Compatibility +------------- + +Tarantool 1.10.x is backward compatible with Tarantool 1.9.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 1.10.x series. + +Functionality added or changed +------------------------------ + +Build +~~~~~ + +- Updated CMake minimum required version in Tarantool build + infrastructure to 3.1. +- Stop publishing new binary packages for CentOS 6. +- Stop publishing new binary packages for Debian Jessie. +- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). +- Backported ``-DENABLE_LTO=ON/OFF`` cmake option (:tarantool-issue:`3117`, + :tarantool-issue:`3743`). + It is useful for building packages for Fedora 33 (:tarantool-issue:`5502`). +- Bump built-in zstd version from v1.3.3 to v1.4.8 + (part of :tarantool-issue:`5502`). +- libcurl symbols in the case of bundled libcurl are now exported + (:tarantool-issue:`5223`, :tarantool-issue:`5542`). +- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). +- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in + the case of libcurl included as bundled library or static build + (:tarantool-issue:`4559`). + +Testing +~~~~~~~ + +- We’re moving to GitHub Actions (:tarantool-issue:`5662`). +- Implemented self-sufficient LuaJIT testing environment. As a result + LuaJIT build system is partially ported to CMake and all testing + machinery is enclosed within tarantool/luajit repository + (:tarantool-issue:`4862`, :tarantool-issue:`5470`). +- Switch to Python 3 by default in a test infrastructure (:tarantool-issue:`5652`) + +Bugs fixed +---------- + +Core +~~~~ + +- Extensive usage of ``uri`` and ``uuid`` modules with debug log level + could lead to a crash or corrupted result of the functions from these + modules. Also their usage from the callbacks passed to ``ffi.gc()`` + could lead to the same but much easier. The same could happen with + some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + (:tarantool-issue:`5632`). + +Lua +~~~ + +- Fixed -e option, when tarantool always entered interactive mode when + stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter + interactive mode as it was before, just prints ‘Hello’ and exits + (:tarantool-issue:`5040`). + +.. _build-1: + +Build +~~~~~ + +- Make recovering with force_recovery option delete newer than snapshot + vylog files. So that instance can recover after incidents during + checkpoint (:tarantool-issue:`5823`). diff --git a/doc/release/2.6.3.rst b/doc/release/2.6.3.rst new file mode 100644 index 0000000000..3c17960071 --- /dev/null +++ b/doc/release/2.6.3.rst @@ -0,0 +1,202 @@ +Tarantool 2.6.3 +=============== + +Release: :tarantool-release:`2.6.3` + +Date: 2021-04-21 Tag: 2.6.3 + +Overview +-------- + +2.6.3 is the second :doc:`stable ` +version of the 2.6 release series. It introduces 15 improvements and +resolves 28 bugs since 2.6.2. + +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 +------------------------------ + +Core +~~~~ + +- Introduce the concept of WAL queue and a new configuration option: + ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The + option helps limit the pace at which replica submits new transactions + to WAL: the limit is checked every time a transaction from master is + submitted to replica’s WAL, and the space taken by a transaction is + considered empty once it’s successfully written (:tarantool-issue:`5536`). + +Replication +~~~~~~~~~~~ + +- Introduce ``box.ctl.promote()`` and the concept of manual elections + (enabled with ``election_mode='manual'``). Once the instance is in + ``manual`` election mode, it acts like a ``voter`` most of the time, + but may trigger elections and become a leader, once + ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, + ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, + which is now deprecated (:tarantool-issue:`3055`). + +Build +~~~~~ + +- Updated CMake minimum required version in Tarantool build + infrastructure to 3.1. +- Drop autotools dependencies from RPM / Deb packages (follows up + :tarantool-issue:`4968`). +- Stop publishing new binary packages for CentOS 6. +- Stop publishing new binary packages for Debian Jessie. +- Stop support of Mac OS 10.13 (disable regular testing). +- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). +- Bump built-in zstd version from v1.3.3 to v1.4.8 + (part of :tarantool-issue:`5502`). +- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). +- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in + the case of libcurl included as bundled library or static build + (:tarantool-issue:`4559`). + +Testing +~~~~~~~ + +- We’re moving to GitHub Actions (:tarantool-issue:`5662`). +- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). +- Implemented self-sufficient LuaJIT testing environment. As a result + LuaJIT build system is partially ported to CMake and all testing + machinery is enclosed within tarantool/luajit repository + (:tarantool-issue:`4862`, :tarantool-issue:`5470`). +- Switch to Python 3 by default in a test infrastructure (:tarantool-issue:`5652`) + +Bugs fixed +---------- + +.. _core-1: + +Core +~~~~ + +- Fix lbox_ctl_is_recovery_finished(): in some cases it might return + true even if recovery was still in the progress. +- Fixed memory corruption in netbox. Because of the wrong order of the + ffi.gc and ffi.cast calls memory of struct error, which was still + used, was freed +- Fix a bug in relay timing out while replica is joining or syncing + with master (:tarantool-issue:`5762`). +- Fixed missing “path” value of index schema fetched by netbox + (:tarantool-issue:`5451`). +- Extensive usage of ``uri`` and ``uuid`` modules with debug log level + could lead to a crash or corrupted result of the functions from these + modules. Also their usage from the callbacks passed to ``ffi.gc()`` + could lead to the same but much easier. The same could happen with + some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + (:tarantool-issue:`5632`). +- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of + ``*.xlog`` files which are needed by replicas and lead to + ``XlogGapError`` (:tarantool-issue:`5806`). +- Fix a bug in applier erroring with ``Unknown request type 40`` during + final join when master has synchronous spaces (:tarantool-issue:`5566`). +- Add memtx mvcc tracking of read gaps which fixes problem of phantom + reads (:tarantool-issue:`5628`). +- Fix wrong result of using space:count() with memtx mvcc + (:tarantool-issue:`5972`). +- Fix dirty read after restart while using mvcc with synchronous + replication (:tarantool-issue:`5973`). + +.. _replication-1: + +Replication +~~~~~~~~~~~ + +- Fix applier hang on a replica after it fails to process CONFIRM or + ROLLBACK message coming from a master. +- Fix master not sending anonymous replica some rows when it fell + behind and is trying to register. +- Fix the bug when a synchronous transaction could be confirmed and + visible on a replica, but then not confirmed / invisible again after + restart. Could happen more likely on memtx spaces with + ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). +- Fix 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 (:tarantool-issue:`5874`). +- Fix a bug in synchronous replication when rolled back transactions + could reappear once a sufficiently old instance reconnected + (:tarantool-issue:`5445`). + +Swim +~~~~ + +- Fix ``:broadcast()`` which does not work on non-local + addresses and spams “Permission denied” errors to the log. Also after + instance termination it could return a non-0 exit code even if there + was no errors in the script, and spam the error again (:tarantool-issue:`5864`). +- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no + arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). +- Fix the crash on an attempt to pass an object of a wrong type to + ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). + +Lua +~~~ + +- Fixed -e option, when tarantool always entered interactive mode when + stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter + interactive mode as it was before, just prints ‘Hello’ and exits + (:tarantool-issue:`5040`). +- Fixed a leak of a tuple object in + ``key_def:compare_with_key(tuple, key)``, when serialization of the + key fails (:tarantool-issue:`5388`). + +SQL +~~~ + +- The string received by the user-defined C or Lua function could be + different from the string passed to the function. This could happen + if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). +- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause + SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, + :tarantool-issue:`5704`, :tarantool-issue:`5913`). +- Fix wrong result of SELECT with GROUP BY in case one of selected + values is VARBINARY, which is not directly obtained from a space + (:tarantool-issue:`5890`). + +Luajit +~~~~~~ + +- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). + +.. _build-1: + +Build +~~~~~ + +- Fix building on FreeBSD (incomplete definition of type ‘struct + sockaddr’) (:tarantool-issue:`5748`). + +- Don’t refetch already downloaded static build dependencies + (:tarantool-issue:`5761`). + +- Make recovering with force_recovery option delete newer than snapshot + vylog files. So that instance can recover after incidents during + checkpoint(:tarantool-issue:`5823`). + +- Fixed libcurl configuring, when tarantool itself is configured with + ``cmake3`` command and there is no ``cmake`` command in PATH + (:tarantool-issue:`5955`). + + This affects building tarantool from sources with bundled libcurl (it + is the default mode). diff --git a/doc/release/2.7.2.rst b/doc/release/2.7.2.rst new file mode 100644 index 0000000000..7d8874cb2b --- /dev/null +++ b/doc/release/2.7.2.rst @@ -0,0 +1,202 @@ +Tarantool 2.7.2 +=============== + +Release: :tarantool-release:`2.7.2` + +Date: 2021-04-21 Tag: 2.7.2 + +Overview +-------- + +2.7.2 is the first :doc:`stable ` +version of the 2.7 release series. It introduces 15 improvements and +resolves 30 bugs since 2.7.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. + +Functionality added or changed +------------------------------ + +Core +~~~~ + +- Introduce the concept of WAL queue and a new configuration option: + ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The + option helps limit the pace at which replica submits new transactions + to WAL: the limit is checked every time a transaction from master is + submitted to replica’s WAL, and the space taken by a transaction is + considered empty once it’s successfully written (:tarantool-issue:`5536`). + +Replication +~~~~~~~~~~~ + +- Introduce ``box.ctl.promote()`` and the concept of manual elections + (enabled with ``election_mode='manual'``). Once the instance is in + ``manual`` election mode, it acts like a ``voter`` most of the time, + but may trigger elections and become a leader, once + ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, + ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, + which is now deprecated (:tarantool-issue:`3055`). + +Build +~~~~~ + +- Updated CMake minimum required version in Tarantool build + infrastructure to 3.1. +- Drop autotools dependencies from RPM / Deb packages (follows up + :tarantool-issue:`4968`). +- Stop publishing new binary packages for CentOS 6. +- Stop publishing new binary packages for Debian Jessie. +- Stop support of Mac OS 10.13 (disable regular testing). +- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). +- Bump built-in zstd version from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). +- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). +- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in + the case of libcurl included as bundled library or static build + (:tarantool-issue:`4559`). + +Testing +~~~~~~~ + +- We’re moving to GitHub Actions (:tarantool-issue:`5662`). +- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). +- Implemented self-sufficient LuaJIT testing environment. As a result + LuaJIT build system is partially ported to CMake and all testing + machinery is enclosed within tarantool/luajit repository (:tarantool-issue:`4862`, + :tarantool-issue:`5470`). +- Switch to Python 3 by default in a test infrastructure. (:tarantool-issue:`5652`) + +Bugs fixed +---------- + +.. _core-1: + +Core +~~~~ + +- Fix lbox_ctl_is_recovery_finished(): in some cases it might return + true even if recovery was still in the progress. +- Fix skipping index part options in case field type is not specified + (:tarantool-issue:`5674`). +- Fixed memory corruption in netbox. Because of the wrong order of the + ffi.gc and ffi.cast calls memory of struct error, which was still + used, was freed +- Fix a bug in relay timing out while replica is joining or syncing + with master (:tarantool-issue:`5762`). +- Fixed missing “path” value of index schema fetched by netbox + (:tarantool-issue:`5451`). +- Extensive usage of ``uri`` and ``uuid`` modules with debug log level + could lead to a crash or corrupted result of the functions from these + modules. Also their usage from the callbacks passed to ``ffi.gc()`` + could lead to the same but much easier. The same could happen with + some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + (:tarantool-issue:`5632`). +- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of + ``*.xlog`` files which are needed by replicas and lead to + ``XlogGapError`` (:tarantool-issue:`5806`). +- Fix a bug in applier erroring with ``Unknown request type 40`` during + final join when master has synchronous spaces (:tarantool-issue:`5566`). +- Add memtx mvcc tracking of read gaps which fixes problem of phantom + reads (:tarantool-issue:`5628`). +- Fix wrong result of using space:count() with memtx mvcc (:tarantool-issue:`5972`). +- Fix dirty read after restart while using mvcc with synchronous + replication (:tarantool-issue:`5973`). + +.. _replication-1: + +Replication +~~~~~~~~~~~ + +- Fix applier hang on a replica after it fails to process CONFIRM or + ROLLBACK message coming from a master. +- Fix master not sending anonymous replica some rows when it fell + behind and is trying to register. +- Fix the bug when a synchronous transaction could be confirmed and + visible on a replica, but then not confirmed / invisible again after + restart. Could happen more likely on memtx spaces with + ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). +- Fix 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 (:tarantool-issue:`5874`). +- Fix a bug in synchronous replication when rolled back transactions + could reappear once a sufficiently old instance reconnected + (:tarantool-issue:`5445`). + +Swim +~~~~ + +- Fix ``:broadcast()`` which does not work on non-local + addresses and spams “Permission denied” errors to the log. Also after + instance termination it could return a non-0 exit code even if there + was no errors in the script, and spam the error again (:tarantool-issue:`5864`). +- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no + arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). +- Fix the crash on an attempt to pass an object of a wrong type to + ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). + +LuaJIT +~~~~~~ + +- Fixed memory profiler misbehaviour when Lua stack resize occurs + (:tarantool-issue:`5842`). +- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). + +Lua +~~~ + +- Fixed -e option, when tarantool always entered interactive mode when + stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter + interactive mode as it was before, just prints ‘Hello’ and exits + (:tarantool-issue:`5040`). +- Fixed a leak of a tuple object in + ``key_def:compare_with_key(tuple, key)``, when serialization of the + key fails (:tarantool-issue:`5388`). + +SQL +~~~ + +- The string received by the user-defined C or Lua function could be + different from the string passed to the function. This could happen + if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). +- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause + SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, :tarantool-issue:`5704`, :tarantool-issue:`5913`). +- Fix wrong result of SELECT with GROUP BY in case one of selected + values is VARBINARY, which is not directly obtained from a space + (:tarantool-issue:`5890`). + +.. _build-1: + +Build +~~~~~ + +- Fix building on FreeBSD (incomplete definition of type ‘struct + sockaddr’) (:tarantool-issue:`5748`). + +- Don’t refetch already downloaded static build dependencies (:tarantool-issue:`5761`). + +- Make recovering with force_recovery option delete newer than snapshot + vylog files. So that instance can recover after incidents during + checkpoint(:tarantool-issue:`5823`). + +- Fixed libcurl configuring, when tarantool itself is configured with + ``cmake3`` command and there is no ``cmake`` command in PATH + (:tarantool-issue:`5955`). + + This affects building tarantool from sources with bundled libcurl (it + is the default mode). diff --git a/doc/release/2.8.1.rst b/doc/release/2.8.1.rst new file mode 100644 index 0000000000..a9f8df718b --- /dev/null +++ b/doc/release/2.8.1.rst @@ -0,0 +1,283 @@ +Tarantool 2.8.1 +=============== + +Release: :tarantool-release:`2.8.1` + +Date: 2021-04-21 Tag: 2.8.1 + +Overview +-------- + +2.8.1 is the :doc:`beta ` +version of the 2.8 release series. + +This release introduces 28 new features and resolves 31 bugs since the +2.7.2 version. There can be bugs in less common areas. If you find any, +feel free to `report an +issue `__ on GitHub. + +Notable changes are: + +- Implement ability to run multiple iproto threads. +- Set box.cfg options with environment variables. +- Introduce box.ctl.promote() and the concept of manual elections. +- Lua memory profiler enhancements. + +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 +------------------------------ + +Core +~~~~ + +- Introduce exclude_null option to index part definition. When it is + on, index filters and doesn’t store tuples with “null” value of this + part (:tarantool-issue:`4480`). + +- Added slab_alloc_granularity option to box.cfg{}. This option allows + user to set multiplicity of memory allocation in small allocator. + slab_alloc_granularity must be exponent of two and >= 4 (:tarantool-issue:`5518`). + +- Previously lua on_shutdown triggers were started sequentially, now + each of triggers starts in a separate fiber. Tarantool waits for 3.0 + seconds to their completion by default. User has the option to change + this value using new implemented box.ctl.set_on_shutdown_timeout + function. If timeout has expired, tarantool immediately stops, + without waiting for other triggers completion. + +- Implemented on_shutdown API, which allows tarantool module developer + to register functions that will be called when tarantool stopped + (:tarantool-issue:`5723`). + +- Introduce the concept of WAL queue and a new configuration option: + ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The + option helps limit the pace at which replica submits new transactions + to WAL: the limit is checked every time a transaction from master is + submitted to replica’s WAL, and the space taken by a transaction is + considered empty once it’s successfully written (:tarantool-issue:`5536`). + +- Provide information about state of synchronous replication via + ``box.info.synchro`` interface (:tarantool-issue:`5191`). + +- Implement ability to run multiple iproto threads, which is useful in + some specific workloads where iproto thread is the bottleneck of + throughput (:tarantool-issue:`5645`). + +- Update operations can’t insert with gaps. This patch changes the + behavior so that the update operation fills the missing fields with + nulls (:tarantool-issue:`3378`). + +- Introduce ``box.lib`` module which allows to load and execute C + stored procedures on read-only nodes (:tarantool-issue:`4642`). + +- Now, it is possible to set box.cfg options with environment variables + (:tarantool-issue:`5602`). + + The priority of sources of configuration options is the following + (from low to high): default, tarantoolctl, environment, box.cfg{}. + +Replication +~~~~~~~~~~~ + +- Introduce ``box.ctl.promote()`` and the concept of manual elections + (enabled with ``election_mode='manual'``). Once the instance is in + ``manual`` election mode, it acts like a ``voter`` most of the time, + but may trigger elections and become a leader, once + ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, + ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, + which is now deprecated (:tarantool-issue:`3055`). + +LuaJIT +~~~~~~ + +- Make LuaJIT memory profiler parser output more user-friendly + (:tarantool-issue:`5811`). Now the source line definition where the event occurs is + much clearer: only source file name and allocation-related line are + presented, the function definition line number is omitted. Moreover, + event-related statistics are indicated with units. **Breaking + change**: Line info of the line function definition is saved in + symbol info table by field ``linedefined`` now and field ``name`` is + renamed to ``source`` with the respect to the Lua Debug API. +- Now memory profiler parser reports heap difference occurring during + the measurement interval (:tarantool-issue:`5812`). New memory profiler’s option + ``--leak-only`` shows only heap difference is introduced. New + built-in module ``memprof.process`` is introduced to perform memory + events post-processing and aggregation. Now to launch memory profiler + via Tarantool user should use the following command: + ``tarantool -e 'require("memprof")(arg)' - --leak-only /tmp/memprof.bin`` + +Tools +~~~~~ + +- Introduced tooling for crash artefacts collecting and postmortem + analysis (:tarantool-issue:`5569`). + +Build +~~~~~ + +- Updated CMake minimum required version in Tarantool build + infrastructure to 3.1. +- Drop autotools dependencies from RPM / Deb packages (follows up + :tarantool-issue:`4968`). +- Stop publishing new binary packages for CentOS 6. +- Stop publishing new binary packages for Debian Jessie. +- Stop support of Mac OS 10.13 (disable regular testing). +- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). +- Bump built-in zstd version from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). +- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). +- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in + the case of libcurl included as bundled library or static build + (:tarantool-issue:`4559`). + +Testing +~~~~~~~ + +- We’re moving to GitHub Actions (:tarantool-issue:`5662`). +- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). +- Run fuzzing testing continuously on per-push basis (:tarantool-issue:`1809`). +- Implemented self-sufficient LuaJIT testing environment. As a result + LuaJIT build system is partially ported to CMake and all testing + machinery is enclosed within tarantool/luajit repository + (:tarantool-issue:`4862`, :tarantool-issue:`5470`). +- Switch to Python 3 by default in a test infrastructure. (:tarantool-issue:`5652`) + +Bugs fixed +---------- + +.. _core-1: + +Core +~~~~ + +- Fix skipping index part options in case field type is not specified + (:tarantool-issue:`5674`). +- Fix lbox_ctl_is_recovery_finished(): in some cases it might return + true even if recovery was still in the progress. +- Fixed memory corruption in netbox. Because of the wrong order of the + ffi.gc and ffi.cast calls memory of struct error, which was still + used, was freed +- Fix a bug in relay timing out while replica is joining or syncing + with master (:tarantool-issue:`5762`). +- Fixed missing “path” value of index schema fetched by netbox + (:tarantool-issue:`5451`). +- Extensive usage of ``uri`` and ``uuid`` modules with debug log level + could lead to a crash or corrupted result of the functions from these + modules. Also their usage from the callbacks passed to ``ffi.gc()`` + could lead to the same but much easier. The same could happen with + some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + (:tarantool-issue:`5632`). +- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of + ``*.xlog`` files which are needed by replicas and lead to + ``XlogGapError`` (:tarantool-issue:`5806`). +- Fix a bug in applier erroring with ``Unknown request type 40`` during + final join when master has synchronous spaces (:tarantool-issue:`5566`). +- Fix 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 (:tarantool-issue:`5968`). +- Add memtx mvcc tracking of read gaps which fixes problem of phantom + reads (:tarantool-issue:`5628`). +- Fix wrong result of using space:count() with memtx mvcc (:tarantool-issue:`5972`). +- Fix dirty read after restart while using mvcc with synchronous + replication (:tarantool-issue:`5973`). + +.. _replication-1: + +Replication +~~~~~~~~~~~ + +- Fix applier hang on a replica after it fails to process CONFIRM or + ROLLBACK message coming from a master. +- Fix master not sending anonymous replica some rows when it fell + behind and is trying to register. +- Fix the bug when a synchronous transaction could be confirmed and + visible on a replica, but then not confirmed / invisible again after + restart. Could happen more likely on memtx spaces with + ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). +- Fix 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 (:tarantool-issue:`5874`). +- Fix a bug in synchronous replication when rolled back transactions + could reappear once a sufficiently old instance reconnected + (:tarantool-issue:`5445`). + +Swim +~~~~ + +- Fix ``:broadcast()`` which does not work on non-local + addresses and spams “Permission denied” errors to the log. Also after + instance termination it could return a non-0 exit code even if there + was no errors in the script, and spam the error again (:tarantool-issue:`5864`). +- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no + arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). +- Fix the crash on an attempt to pass an object of a wrong type to + ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). + +.. _luajit-1: + +LuaJIT +~~~~~~ + +- Fixed memory profiler misbehaviour when Lua stack resize occurs + (:tarantool-issue:`5842`). +- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). + +Lua +~~~ + +- Fixed -e option, when tarantool always entered interactive mode when + stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter + interactive mode as it was before, just prints ‘Hello’ and exits + (:tarantool-issue:`5040`). +- Fixed a leak of a tuple object in + ``key_def:compare_with_key(tuple, key)``, when serialization of the + key fails (:tarantool-issue:`5388`). + +SQL +~~~ + +- The string received by the user-defined C or Lua function could be + different from the string passed to the function. This could happen + if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). +- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause + SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, + :tarantool-issue:`5704`, :tarantool-issue:`5913`). +- Fix wrong result of SELECT with GROUP BY in case one of selected + values is VARBINARY, which is not directly obtained from a space + (:tarantool-issue:`5890`). + +.. _build-1: + +Build +~~~~~ + +- Fix building on FreeBSD (incomplete definition of type ‘struct + sockaddr’) (:tarantool-issue:`5748`). + +- Don’t refetch already downloaded static build dependencies + (:tarantool-issue:`5761`). + +- Make recovering with force_recovery option delete newer than snapshot + vylog files. So that instance can recover after incidents during + checkpoint (:tarantool-issue:`5823`). + +- Fixed libcurl configuring, when tarantool itself is configured with + ``cmake3`` command and there is no ``cmake`` command in PATH + (:tarantool-issue:`5955`). + + This affects building tarantool from sources with bundled libcurl (it + is the default mode). From 1fe7c6d61c26b41e214d0258b63a1f8d1e9a6ecf Mon Sep 17 00:00:00 2001 From: Nick Volynkin Date: Mon, 26 Apr 2021 12:35:27 +0700 Subject: [PATCH 2/2] Proofread the Release Notes for April release Resolve #2039 --- conf.py | 6 +- .../configuration/cfg_networking.rst | 4 +- doc/release/1.10.10.rst | 62 ++- doc/release/1.10.9.rst | 8 +- doc/release/2.6.3.rst | 234 ++++++----- doc/release/2.7.2.rst | 242 ++++++----- doc/release/2.8.1.rst | 378 ++++++++++-------- 7 files changed, 533 insertions(+), 401 deletions(-) diff --git a/conf.py b/conf.py index 42c23aa31d..a624da15d4 100644 --- a/conf.py +++ b/conf.py @@ -37,9 +37,9 @@ ] extlinks = { - 'tarantool-issue': ('https://github.com/tarantool/tarantool/issues/%s', 'tarantool/tarantool#'), - 'tarantool-release': ('https://github.com/tarantool/tarantool/releases/%s', 'tarantool/tarantool/releases/'), - 'doc-issue': ('https://github.com/tarantool/doc/issues/%s', 'tarantool/doc#'), + 'tarantool-issue': ('https://github.com/tarantool/tarantool/issues/%s', 'gh-'), + 'tarantool-release': ('https://github.com/tarantool/tarantool/releases/%s', 'v. '), + 'doc-issue': ('https://github.com/tarantool/doc/issues/%s', 'doc-'), } imgmath_image_format = 'svg' diff --git a/doc/reference/configuration/cfg_networking.rst b/doc/reference/configuration/cfg_networking.rst index f380aca305..9a959d37d6 100644 --- a/doc/reference/configuration/cfg_networking.rst +++ b/doc/reference/configuration/cfg_networking.rst @@ -72,9 +72,9 @@ .. _cfg_networking-iproto_threads: -.. confval:: iproto_threads +.. confval:: iproto_threads - Since version 2.8.1. + Since version :doc:`2.8.1 `. The number of :ref:`network threads `. There can be unusual workloads where the network thread is 100% loaded and the transaction processor thread is not, so the network diff --git a/doc/release/1.10.10.rst b/doc/release/1.10.10.rst index aea3a12742..d365a31c8b 100644 --- a/doc/release/1.10.10.rst +++ b/doc/release/1.10.10.rst @@ -1,9 +1,11 @@ Tarantool 1.10.10 ================= -Release: :tarantool-release:`1.10.10` +Released on 2021-04-21. + +* Release :tarantool-release:`1.10.10`. +* Tagged ``1.10.10-0-gaea7ae7`` -Date: 2021-04-21 Tag: 1.10.10 Overview -------- @@ -12,12 +14,12 @@ Overview :doc:`long-term support (LTS) version ` 1.10.x release series. -The label “stable” means there are 1.10.x-based applications running in +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 12 improvements and resolves roughly 3 issues -since the 1.10.9 version. +since version :doc:`1.10.9 `. Compatibility ------------- @@ -36,32 +38,30 @@ Functionality added or changed Build ~~~~~ -- Updated CMake minimum required version in Tarantool build - infrastructure to 3.1. -- Stop publishing new binary packages for CentOS 6. -- Stop publishing new binary packages for Debian Jessie. -- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). -- Backported ``-DENABLE_LTO=ON/OFF`` cmake option (:tarantool-issue:`3117`, +- Tarantool build infrastructure now requires CMake version 3.1 or later. +- Binary packages for Fedora 33 (:tarantool-issue:`5502`) are now available. +- Binary packages for CentOS 6 and Debian Jessie won't be published since this version. +- Backported the ``-DENABLE_LTO=ON/OFF`` CMake option (:tarantool-issue:`3117`, :tarantool-issue:`3743`). It is useful for building packages for Fedora 33 (:tarantool-issue:`5502`). -- Bump built-in zstd version from v1.3.3 to v1.4.8 +- The built-in zstd is upgraded from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). -- libcurl symbols in the case of bundled libcurl are now exported +- ``libcurl`` symbols in the case of bundled libcurl are now exported (:tarantool-issue:`5223`, :tarantool-issue:`5542`). -- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). -- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in - the case of libcurl included as bundled library or static build +- SMTP and SMTPS protocols are now enabled in the bundled ``libcurl`` (:tarantool-issue:`4559`). +- The ``libcurl`` headers are now shipped to system path ``${PREFIX}/include/tarantool`` + when ``libcurl`` is included as a bundled library or in a static build (:tarantool-issue:`4559`). Testing ~~~~~~~ -- We’re moving to GitHub Actions (:tarantool-issue:`5662`). -- Implemented self-sufficient LuaJIT testing environment. As a result - LuaJIT build system is partially ported to CMake and all testing - machinery is enclosed within tarantool/luajit repository - (:tarantool-issue:`4862`, :tarantool-issue:`5470`). -- Switch to Python 3 by default in a test infrastructure (:tarantool-issue:`5652`) +- Tarantool CI/CD has migrated to GitHub Actions (:tarantool-issue:`5662`). +- Implemented a self-sufficient LuaJIT testing environment. As a result, + LuaJIT build system is now partially ported to CMake and all testing + machinery is enclosed within the `tarantool/luajit `__ + repository (:tarantool-issue:`4862`, :tarantool-issue:`5470`). +- Python 3 is now the default in the test infrastructure (:tarantool-issue:`5652`). Bugs fixed ---------- @@ -70,25 +70,23 @@ Core ~~~~ - Extensive usage of ``uri`` and ``uuid`` modules with debug log level - could lead to a crash or corrupted result of the functions from these - modules. Also their usage from the callbacks passed to ``ffi.gc()`` - could lead to the same but much easier. The same could happen with - some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + 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 ``fio``, ``box.tuple``, and ``iconv`` (:tarantool-issue:`5632`). Lua ~~~ -- Fixed -e option, when tarantool always entered interactive mode when - stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter - interactive mode as it was before, just prints ‘Hello’ and exits +- Fixed the `-e` option, when ``tarantool`` used 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 (:tarantool-issue:`5040`). -.. _build-1: Build ~~~~~ -- Make recovering with force_recovery option delete newer than snapshot - vylog files. So that instance can recover after incidents during - checkpoint (:tarantool-issue:`5823`). +- Recovering with ``force_recovery`` option now deletes vylog files newer than the snapshot. + It helps an instance recover after incidents during a checkpoint (:tarantool-issue:`5823`). diff --git a/doc/release/1.10.9.rst b/doc/release/1.10.9.rst index 5f048dffe1..ff91c5395d 100644 --- a/doc/release/1.10.9.rst +++ b/doc/release/1.10.9.rst @@ -38,11 +38,11 @@ Build Misc ~~~~ -- Don’t start an ‘example’ instance after installing tarantool +- Don’t start an ‘example’ instance after installing Tarantool (:tarantool-issue:`4507`). - Before this release tarantool package for Debian and Ubuntu used to - automatically enable and start an ‘example’ instance, which would + Before this release the ``tarantool`` package for Debian and Ubuntu used to + automatically enable and start an 'example' instance, which would listen on the TCP port ``3301``. Since this release the instance file is installed to ``/etc/tarantool/instances.available/example.lua``, but isn’t enabled by default and not started anymore. You can enable @@ -92,6 +92,6 @@ Lua - An attempt to use a ``net.box`` connection which is not established yet now results in a correctly reported error (:tarantool-issue:`4787`). -- Fixed a hang which occured when ``tarantool`` ran a user script with +- Fixed a hang which occurred when ``tarantool`` ran a user script with the ``-e`` option and this script exited with an error (like with ``tarantool -e 'assert(false)'``) (:tarantool-issue:`4983`). diff --git a/doc/release/2.6.3.rst b/doc/release/2.6.3.rst index 3c17960071..faaf3def65 100644 --- a/doc/release/2.6.3.rst +++ b/doc/release/2.6.3.rst @@ -1,22 +1,24 @@ Tarantool 2.6.3 =============== -Release: :tarantool-release:`2.6.3` +Released on 2021-04-21. -Date: 2021-04-21 Tag: 2.6.3 +* Release :tarantool-release:`2.6.3`. +* Tagged ``2.6.3-0-gcd487a2`` Overview -------- 2.6.3 is the second :doc:`stable ` version of the 2.6 release series. It introduces 15 improvements and -resolves 28 bugs since 2.6.2. +resolves 28 bugs since version :doc:`2.6.2 `. -The “stable” label means that we have all planned features implemented +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 ------------- @@ -28,175 +30,209 @@ Please using the ``box.schema.upgrade()`` procedure to unlock all the new features of the 2.x series. + Functionality added or changed ------------------------------ Core ~~~~ -- Introduce the concept of WAL queue and a new configuration option: - ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The - option helps limit the pace at which replica submits new transactions - to WAL: the limit is checked every time a transaction from master is - submitted to replica’s WAL, and the space taken by a transaction is - considered empty once it’s successfully written (:tarantool-issue:`5536`). +- 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 + (:tarantool-issue:`5536`). + Replication ~~~~~~~~~~~ -- Introduce ``box.ctl.promote()`` and the concept of manual elections - (enabled with ``election_mode='manual'``). Once the instance is in - ``manual`` election mode, it acts like a ``voter`` most of the time, - but may trigger elections and become a leader, once - ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, +- Introduced the ``box.ctl.promote()`` function and the concept of manual elections + (enabled with ``election_mode='manual'``) (:tarantool-issue:`3055`). + + Once the instance is in the ``manual`` election mode, + it acts like a ``voter`` most of the time, + but may trigger elections and become a leader when ``box.ctl.promote()`` is called. + When ``election_mode ~= 'manual'``, ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, - which is now deprecated (:tarantool-issue:`3055`). + which is now deprecated. + Build ~~~~~ -- Updated CMake minimum required version in Tarantool build - infrastructure to 3.1. -- Drop autotools dependencies from RPM / Deb packages (follows up +- Tarantool build infrastructure now requires CMake version 3.1 or later. + +- Binary packages for Fedora 33 are now available (:tarantool-issue:`5502`) . + +- Binary packages for CentOS 6 and Debian Jessie won't be published since this version. + +- RPM and DEB packages no longer have the ``autotools`` dependency (follows up :tarantool-issue:`4968`). -- Stop publishing new binary packages for CentOS 6. -- Stop publishing new binary packages for Debian Jessie. -- Stop support of Mac OS 10.13 (disable regular testing). -- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). -- Bump built-in zstd version from v1.3.3 to v1.4.8 + +- Regular testing on MacOS 10.13 has been disabled, effectively stopping + the support of this version. + +- The built-in ``zstd`` is upgraded from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). -- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). -- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in - the case of libcurl included as bundled library or static build + +- SMTP and SMTPS protocols are now enabled in the bundled ``libcurl`` (:tarantool-issue:`4559`). + +- The ``libcurl`` headers are now shipped to system path ``${PREFIX}/include/tarantool`` + when ``libcurl`` is included as a bundled library or in a static build (:tarantool-issue:`4559`). + Testing ~~~~~~~ -- We’re moving to GitHub Actions (:tarantool-issue:`5662`). -- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). -- Implemented self-sufficient LuaJIT testing environment. As a result - LuaJIT build system is partially ported to CMake and all testing - machinery is enclosed within tarantool/luajit repository - (:tarantool-issue:`4862`, :tarantool-issue:`5470`). -- Switch to Python 3 by default in a test infrastructure (:tarantool-issue:`5652`) +- Tarantool CI/CD has migrated to GitHub Actions (:tarantool-issue:`5662`). + +- Single node Jepsen testing now runs on per-push basis (:tarantool-issue:`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 (:tarantool-issue:`4862`, :tarantool-issue:`5470`). + +- Python 3 is now the default in the test infrastructure (:tarantool-issue:`5652`). + Bugs fixed ---------- -.. _core-1: - Core ~~~~ -- Fix lbox_ctl_is_recovery_finished(): in some cases it might return - true even if recovery was still in the progress. -- Fixed memory corruption in netbox. Because of the wrong order of the - ffi.gc and ffi.cast calls memory of struct error, which was still - used, was freed -- Fix a bug in relay timing out while replica is joining or syncing - with master (:tarantool-issue:`5762`). -- Fixed missing “path” value of index schema fetched by netbox +- The ``lbox_ctl_is_recovery_finished()`` function no longer returns ``true`` + when 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 ``ffi.gc`` and ``ffi.cast`` calls. + +- Relay can no longer time out while a replica is joining or syncing with the master. + (:tarantool-issue:`5762`). + +- An issue with missing "path" value of index schema fetched by netbox has been fixed (:tarantool-issue:`5451`). + - Extensive usage of ``uri`` and ``uuid`` modules with debug log level - could lead to a crash or corrupted result of the functions from these - modules. Also their usage from the callbacks passed to ``ffi.gc()`` - could lead to the same but much easier. The same could happen with - some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + 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 ``fio``, ``box.tuple``, and ``iconv`` (:tarantool-issue:`5632`). -- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of - ``*.xlog`` files which are needed by replicas and lead to - ``XlogGapError`` (:tarantool-issue:`5806`). -- Fix a bug in applier erroring with ``Unknown request type 40`` during - final join when master has synchronous spaces (:tarantool-issue:`5566`). -- Add memtx mvcc tracking of read gaps which fixes problem of phantom - reads (:tarantool-issue:`5628`). -- Fix wrong result of using space:count() with memtx mvcc - (:tarantool-issue:`5972`). -- Fix dirty read after restart while using mvcc with synchronous + +- The new ``wal_cleanup_delay`` option can prevent early cleanup of + ``*.xlog`` files, needed by replicas. + Such cleanup used to result in a ``XlogGapError`` (:tarantool-issue:`5806`). + +- Appliers will no longer cause errors with ``Unknown request type 40`` during + a final join when the master has synchronous spaces (:tarantool-issue:`5566`). + +- Added memtx MVCC tracking of read gaps which fixes the problem of phantom reads + (:tarantool-issue:`5628`). + +- Fixed the wrong result of using ``space:count()`` with memtx MVCC (:tarantool-issue:`5972`). + +- Fixed the dirty read after restart while using MVCC with synchronous replication (:tarantool-issue:`5973`). -.. _replication-1: Replication ~~~~~~~~~~~ -- Fix applier hang on a replica after it fails to process CONFIRM or - ROLLBACK message coming from a master. -- Fix master not sending anonymous replica some rows when it fell - behind and is trying to register. -- Fix the bug when a synchronous transaction could be confirmed and - visible on a replica, but then not confirmed / invisible again after - restart. Could happen more likely on memtx spaces with +- Fixed an issue with an applier hanging on a replica after failing to process + a ``CONFIRM`` or ``ROLLBACK`` message 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 ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). -- Fix recovery of a rolled back multi-statement synchronous transaction + +- 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 (:tarantool-issue:`5874`). -- Fix a bug in synchronous replication when rolled back transactions - could reappear once a sufficiently old instance reconnected + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance (:tarantool-issue:`5445`). + Swim ~~~~ -- Fix ``:broadcast()`` which does not work on non-local - addresses and spams “Permission denied” errors to the log. Also after - instance termination it could return a non-0 exit code even if there - was no errors in the script, and spam the error again (:tarantool-issue:`5864`). -- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no +- Fixed an issue where ``: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 + (:tarantool-issue:`5864`). + +- Fixed the crash on attempts to call ``swim:member_by_uuid()`` with no arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). -- Fix the crash on an attempt to pass an object of a wrong type to + +- Fixed the crash on attempts to pass an object of a wrong type to ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). Lua ~~~ -- Fixed -e option, when tarantool always entered interactive mode when - stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter - interactive mode as it was before, just prints ‘Hello’ and exits +- Fixed the `-e` option, when ``tarantool`` used 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 (:tarantool-issue:`5040`). -- Fixed a leak of a tuple object in - ``key_def:compare_with_key(tuple, key)``, when serialization of the - key fails (:tarantool-issue:`5388`). + +- 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 (:tarantool-issue:`5388`). + SQL ~~~ -- The string received by the user-defined C or Lua function could be +- 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 - if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). -- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause + when the string passed from SQL had contained ``\\0`` + (:tarantool-issue:`5938`). + +- ``SQL SELECT`` or ``SQL UPDATE`` on ``UUID`` or ``DECIMAL`` field will not cause a SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, :tarantool-issue:`5704`, :tarantool-issue:`5913`). -- Fix wrong result of SELECT with GROUP BY in case one of selected - values is VARBINARY, which is not directly obtained from a space + +- Fixed an issue with wrong results of ``SELECT`` with ``GROUP BY`` which occurred + when one of the selected values was ``VARBINARY`` and not directly obtained from the space (:tarantool-issue:`5890`). -Luajit +LuaJIT ~~~~~~ -- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics - when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). +- Fixed a double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + which occurred when a finalizer was set for a ``GCсdata`` object (:tarantool-issue:`5820`). -.. _build-1: Build ~~~~~ -- Fix building on FreeBSD (incomplete definition of type ‘struct - sockaddr’) (:tarantool-issue:`5748`). +- Fix building on FreeBSD (incomplete definition of type ``struct + sockaddr``) + (:tarantool-issue:`5748`). -- Don’t refetch already downloaded static build dependencies +- The already downloaded static build dependencies will not be fetched repeatedly (:tarantool-issue:`5761`). -- Make recovering with force_recovery option delete newer than snapshot - vylog files. So that instance can recover after incidents during - checkpoint(:tarantool-issue:`5823`). +- Recovering with ``force_recovery`` option now deletes vylog files which are newer than the snapshot. + It helps an instance recover after incidents during a checkpoint (:tarantool-issue:`5823`). -- Fixed libcurl configuring, when tarantool itself is configured with - ``cmake3`` command and there is no ``cmake`` command in PATH +- Fixed the ``libcurl`` configuring when Tarantool itself has been configured with + ``cmake3`` command and there was no ``cmake`` command in the ``PATH`` (:tarantool-issue:`5955`). - This affects building tarantool from sources with bundled libcurl (it + This affects building Tarantool from sources with bundled ``libcurl`` (it is the default mode). diff --git a/doc/release/2.7.2.rst b/doc/release/2.7.2.rst index 7d8874cb2b..7e1b2e0a82 100644 --- a/doc/release/2.7.2.rst +++ b/doc/release/2.7.2.rst @@ -1,16 +1,17 @@ Tarantool 2.7.2 =============== -Release: :tarantool-release:`2.7.2` +Released on 2021-04-21. -Date: 2021-04-21 Tag: 2.7.2 +* Release :tarantool-release:`2.7.2`. +* Tagged ``2.7.2-0-g4d8c068`` Overview -------- 2.7.2 is the first :doc:`stable ` version of the 2.7 release series. It introduces 15 improvements and -resolves 30 bugs since 2.7.1. +resolves 30 bugs since version :doc:`2.7.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, @@ -34,169 +35,202 @@ Functionality added or changed Core ~~~~ -- Introduce the concept of WAL queue and a new configuration option: - ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The - option helps limit the pace at which replica submits new transactions - to WAL: the limit is checked every time a transaction from master is - submitted to replica’s WAL, and the space taken by a transaction is - considered empty once it’s successfully written (:tarantool-issue:`5536`). +- 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 + (:tarantool-issue:`5536`). Replication ~~~~~~~~~~~ -- Introduce ``box.ctl.promote()`` and the concept of manual elections - (enabled with ``election_mode='manual'``). Once the instance is in - ``manual`` election mode, it acts like a ``voter`` most of the time, - but may trigger elections and become a leader, once - ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, +- Introduced the ``box.ctl.promote()`` function and the concept of manual elections + (enabled with ``election_mode='manual'``) (:tarantool-issue:`3055`). + + Once the instance is in the ``manual`` election mode, + it acts like a ``voter`` most of the time, + but may trigger elections and become a leader when ``box.ctl.promote()`` is called. + When ``election_mode ~= 'manual'``, ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, - which is now deprecated (:tarantool-issue:`3055`). + which is now deprecated. Build ~~~~~ -- Updated CMake minimum required version in Tarantool build - infrastructure to 3.1. -- Drop autotools dependencies from RPM / Deb packages (follows up + +- Tarantool build infrastructure now requires CMake version 3.1 or later. + +- Binary packages for Fedora 33 are now available (:tarantool-issue:`5502`) . + +- Binary packages for CentOS 6 and Debian Jessie won't be published since this version. + +- RPM and DEB packages no longer have the ``autotools`` dependency (follows up :tarantool-issue:`4968`). -- Stop publishing new binary packages for CentOS 6. -- Stop publishing new binary packages for Debian Jessie. -- Stop support of Mac OS 10.13 (disable regular testing). -- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). -- Bump built-in zstd version from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). -- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). -- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in - the case of libcurl included as bundled library or static build + +- Regular testing on MacOS 10.13 has been disabled, effectively stopping + the support of this version. + +- The built-in ``zstd`` is upgraded from v1.3.3 to v1.4.8 + (part of :tarantool-issue:`5502`). + +- SMTP and SMTPS protocols are now enabled in the bundled ``libcurl`` (:tarantool-issue:`4559`). + +- The ``libcurl`` headers are now shipped to system path ``${PREFIX}/include/tarantool`` + when ``libcurl`` is included as a bundled library or in a static build (:tarantool-issue:`4559`). Testing ~~~~~~~ -- We’re moving to GitHub Actions (:tarantool-issue:`5662`). -- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). -- Implemented self-sufficient LuaJIT testing environment. As a result - LuaJIT build system is partially ported to CMake and all testing - machinery is enclosed within tarantool/luajit repository (:tarantool-issue:`4862`, - :tarantool-issue:`5470`). -- Switch to Python 3 by default in a test infrastructure. (:tarantool-issue:`5652`) +- Tarantool CI/CD has migrated to GitHub Actions (:tarantool-issue:`5662`). + +- Single node Jepsen testing now runs on per-push basis (:tarantool-issue:`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 (:tarantool-issue:`4862`, :tarantool-issue:`5470`). + +- Python 3 is now the default in the test infrastructure (:tarantool-issue:`5652`). Bugs fixed ---------- -.. _core-1: - Core ~~~~ -- Fix lbox_ctl_is_recovery_finished(): in some cases it might return - true even if recovery was still in the progress. -- Fix skipping index part options in case field type is not specified + +- The index part options are no longer skipped when the field type is not specified (:tarantool-issue:`5674`). -- Fixed memory corruption in netbox. Because of the wrong order of the - ffi.gc and ffi.cast calls memory of struct error, which was still - used, was freed -- Fix a bug in relay timing out while replica is joining or syncing - with master (:tarantool-issue:`5762`). -- Fixed missing “path” value of index schema fetched by netbox + +- The ``lbox_ctl_is_recovery_finished()`` function no longer returns ``true`` + when 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 ``ffi.gc`` and ``ffi.cast`` calls. + +- Relay can no longer time out while a replica is joining or syncing with the master. + (:tarantool-issue:`5762`). + +- An issue with missing "path" value of index schema fetched by netbox has been fixed (:tarantool-issue:`5451`). + - Extensive usage of ``uri`` and ``uuid`` modules with debug log level - could lead to a crash or corrupted result of the functions from these - modules. Also their usage from the callbacks passed to ``ffi.gc()`` - could lead to the same but much easier. The same could happen with - some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + 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 ``fio``, ``box.tuple``, and ``iconv`` (:tarantool-issue:`5632`). -- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of - ``*.xlog`` files which are needed by replicas and lead to - ``XlogGapError`` (:tarantool-issue:`5806`). -- Fix a bug in applier erroring with ``Unknown request type 40`` during - final join when master has synchronous spaces (:tarantool-issue:`5566`). -- Add memtx mvcc tracking of read gaps which fixes problem of phantom - reads (:tarantool-issue:`5628`). -- Fix wrong result of using space:count() with memtx mvcc (:tarantool-issue:`5972`). -- Fix dirty read after restart while using mvcc with synchronous - replication (:tarantool-issue:`5973`). -.. _replication-1: +- The new ``wal_cleanup_delay`` option can prevent early cleanup of + ``*.xlog`` files, needed by replicas. + Such cleanup used to result in a ``XlogGapError`` (:tarantool-issue:`5806`). + +- Appliers will no longer cause errors with ``Unknown request type 40`` during + a final join when the master has synchronous spaces (:tarantool-issue:`5566`). + +- Added memtx MVCC tracking of read gaps which fixes the problem of phantom reads + (:tarantool-issue:`5628`). + +- Fixed the wrong result of using ``space:count()`` with memtx MVCC (:tarantool-issue:`5972`). + +- Fixed the dirty read after restart while using MVCC with synchronous + replication (:tarantool-issue:`5973`). Replication ~~~~~~~~~~~ -- Fix applier hang on a replica after it fails to process CONFIRM or - ROLLBACK message coming from a master. -- Fix master not sending anonymous replica some rows when it fell - behind and is trying to register. -- Fix the bug when a synchronous transaction could be confirmed and - visible on a replica, but then not confirmed / invisible again after - restart. Could happen more likely on memtx spaces with +- Fixed an issue with an applier hanging on a replica after failing to process + a ``CONFIRM`` or ``ROLLBACK`` message 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 ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). -- Fix recovery of a rolled back multi-statement synchronous transaction + +- 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 (:tarantool-issue:`5874`). -- Fix a bug in synchronous replication when rolled back transactions - could reappear once a sufficiently old instance reconnected + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance (:tarantool-issue:`5445`). -Swim -~~~~ +Module swim +~~~~~~~~~~~ + +- Fixed an issue where ``: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 + (:tarantool-issue:`5864`). -- Fix ``:broadcast()`` which does not work on non-local - addresses and spams “Permission denied” errors to the log. Also after - instance termination it could return a non-0 exit code even if there - was no errors in the script, and spam the error again (:tarantool-issue:`5864`). -- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no +- Fixed the crash on attempts to call ``swim:member_by_uuid()`` with no arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). -- Fix the crash on an attempt to pass an object of a wrong type to + +- Fixed the crash on attempts to pass an object of a wrong type to ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). LuaJIT ~~~~~~ -- Fixed memory profiler misbehaviour when Lua stack resize occurs +- Lua stack resizing no longer results in a wrong behaviour of the memory profiler (:tarantool-issue:`5842`). -- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics - when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). + +- Fixed a double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + which occurred when a finalizer was set for a ``GCсdata`` object (:tarantool-issue:`5820`). Lua ~~~ -- Fixed -e option, when tarantool always entered interactive mode when - stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter - interactive mode as it was before, just prints ‘Hello’ and exits +- Fixed the `-e` option, when ``tarantool`` used 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 (:tarantool-issue:`5040`). -- Fixed a leak of a tuple object in - ``key_def:compare_with_key(tuple, key)``, when serialization of the - key fails (:tarantool-issue:`5388`). + +- 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 (:tarantool-issue:`5388`). SQL ~~~ -- The string received by the user-defined C or Lua function could be +- 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 - if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). -- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause - SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, :tarantool-issue:`5704`, :tarantool-issue:`5913`). -- Fix wrong result of SELECT with GROUP BY in case one of selected - values is VARBINARY, which is not directly obtained from a space - (:tarantool-issue:`5890`). + when the string passed from SQL had contained ``\\0`` + (:tarantool-issue:`5938`). -.. _build-1: +- ``SQL SELECT`` or ``SQL UPDATE`` on ``UUID`` or ``DECIMAL`` field will not cause a + SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, + :tarantool-issue:`5704`, :tarantool-issue:`5913`). + +- Fixed an issue with wrong results of ``SELECT`` with ``GROUP BY`` which occurred + when one of the selected values was ``VARBINARY`` and not directly obtained from the space + (:tarantool-issue:`5890`). Build ~~~~~ -- Fix building on FreeBSD (incomplete definition of type ‘struct - sockaddr’) (:tarantool-issue:`5748`). +- Fix building on FreeBSD (incomplete definition of type ``struct + sockaddr``) + (:tarantool-issue:`5748`). -- Don’t refetch already downloaded static build dependencies (:tarantool-issue:`5761`). +- The already downloaded static build dependencies will not be fetched repeatedly + (:tarantool-issue:`5761`). -- Make recovering with force_recovery option delete newer than snapshot - vylog files. So that instance can recover after incidents during - checkpoint(:tarantool-issue:`5823`). +- Recovering with ``force_recovery`` option now deletes vylog files which are newer than the snapshot. + It helps an instance recover after incidents during a checkpoint (:tarantool-issue:`5823`). -- Fixed libcurl configuring, when tarantool itself is configured with - ``cmake3`` command and there is no ``cmake`` command in PATH +- Fixed the ``libcurl`` configuring when Tarantool itself has been configured with + ``cmake3`` command and there was no ``cmake`` command in the ``PATH`` (:tarantool-issue:`5955`). - This affects building tarantool from sources with bundled libcurl (it - is the default mode). + This affects building Tarantool from sources with bundled ``libcurl`` (it + is the default mode). \ No newline at end of file diff --git a/doc/release/2.8.1.rst b/doc/release/2.8.1.rst index a9f8df718b..99c0cae2a9 100644 --- a/doc/release/2.8.1.rst +++ b/doc/release/2.8.1.rst @@ -1,9 +1,10 @@ Tarantool 2.8.1 =============== -Release: :tarantool-release:`2.8.1` +Released on 2021-04-21. -Date: 2021-04-21 Tag: 2.8.1 +* Release :tarantool-release:`2.8.1`. +* Tagged ``2.8.1-0-ge2a1ec0`` Overview -------- @@ -11,17 +12,17 @@ Overview 2.8.1 is the :doc:`beta ` version of the 2.8 release series. -This release introduces 28 new features and resolves 31 bugs since the -2.7.2 version. There can be bugs in less common areas. If you find any, -feel free to `report an +This release introduces 28 new features and resolves 31 bug since version :doc:`2.7.2 `. +There can be bugs in less common areas. +If you find any, feel free to `report an issue `__ on GitHub. Notable changes are: -- Implement ability to run multiple iproto threads. -- Set box.cfg options with environment variables. -- Introduce box.ctl.promote() and the concept of manual elections. -- Lua memory profiler enhancements. +- Tarantool is now able to set multiple iproto threads. +- Setting ``box.cfg`` options with environment variables. +- The new ``box.ctl.promote()`` function and the concept of manual elections. +- Enhancements in the Lua memory profiler. Compatibility ------------- @@ -34,250 +35,313 @@ Please using the ``box.schema.upgrade()`` procedure to unlock all the new features of the 2.x series. + Functionality added or changed ------------------------------ Core ~~~~ -- Introduce exclude_null option to index part definition. When it is - on, index filters and doesn’t store tuples with “null” value of this - part (:tarantool-issue:`4480`). - -- Added slab_alloc_granularity option to box.cfg{}. This option allows - user to set multiplicity of memory allocation in small allocator. - slab_alloc_granularity must be exponent of two and >= 4 (:tarantool-issue:`5518`). - -- Previously lua on_shutdown triggers were started sequentially, now - each of triggers starts in a separate fiber. Tarantool waits for 3.0 - seconds to their completion by default. User has the option to change - this value using new implemented box.ctl.set_on_shutdown_timeout - function. If timeout has expired, tarantool immediately stops, - without waiting for other triggers completion. - -- Implemented on_shutdown API, which allows tarantool module developer - to register functions that will be called when tarantool stopped - (:tarantool-issue:`5723`). - -- Introduce the concept of WAL queue and a new configuration option: - ``wal_queue_max_size``, measured in bytes, with 16 Mb default. The - option helps limit the pace at which replica submits new transactions - to WAL: the limit is checked every time a transaction from master is - submitted to replica’s WAL, and the space taken by a transaction is - considered empty once it’s successfully written (:tarantool-issue:`5536`). - -- Provide information about state of synchronous replication via +- The ``exclude_null`` option can now be used in the index part definition. + With this option, the index filters and doesn't store tuples with "null" value + of the corresponding part part (:tarantool-issue:`4480`). + + For example, an index created with + ``s:create_index('sk', {parts={{2, 'number', exclude_null=true}}})`` + will ignore tuples ``{1, null}`` and ``{2, null}``, + but will not ignore ``{null, 1}`` or ``{1, 1}``. + +- Added a ``slab_alloc_granularity`` option to ``box.cfg{}``. This option allows + user to set multiplicity of memory allocation in a small allocator. + The value of ``slab_alloc_granularity`` must be exponent of two and >= 4 + (:tarantool-issue:`5518`). + +- Previously, Lua `on_shutdown` triggers started sequentially. + Now each trigger starts in a separate fiber. + By default, Tarantool waits for the triggers to finish for 3.0 seconds. + User has the option to change this value using the new + ``box.ctl.set_on_shutdown_timeout`` function. + + When the timeout expires, Tarantool stops immediately + without waiting for the other triggers to finish. + +- Tarantool module developers can now register functions to call when Tarantool stops + with the new ``on_shutdown`` API, (:tarantool-issue:`5723`). + +- 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 + (:tarantool-issue:`5536`). + +- The information about the state of synchronous replication is now available via the ``box.info.synchro`` interface (:tarantool-issue:`5191`). -- Implement ability to run multiple iproto threads, which is useful in - some specific workloads where iproto thread is the bottleneck of +- Tarantool can now :ref:`run multiple iproto threads `. + It is useful in some specific workloads where iproto thread is the bottleneck of throughput (:tarantool-issue:`5645`). - Update operations can’t insert with gaps. This patch changes the behavior so that the update operation fills the missing fields with nulls (:tarantool-issue:`3378`). -- Introduce ``box.lib`` module which allows to load and execute C +- The new ``box.lib`` module allows loading and executing C stored procedures on read-only nodes (:tarantool-issue:`4642`). -- Now, it is possible to set box.cfg options with environment variables +- Configuration options in `box.cfg` can now be defined with environment variables (:tarantool-issue:`5602`). - The priority of sources of configuration options is the following - (from low to high): default, tarantoolctl, environment, box.cfg{}. + The priority of sources of configuration options is the following, from higher to lower: + + * ``box.cfg{}``, + * environment variables, + * ``tarantoolctl`` options, + * default values, + Replication ~~~~~~~~~~~ -- Introduce ``box.ctl.promote()`` and the concept of manual elections - (enabled with ``election_mode='manual'``). Once the instance is in - ``manual`` election mode, it acts like a ``voter`` most of the time, - but may trigger elections and become a leader, once - ``box.ctl.promote()`` is called. When ``election_mode ~= 'manual'``, +- Introduced the ``box.ctl.promote()`` function and the concept of manual elections + (enabled with ``election_mode='manual'``) (:tarantool-issue:`3055`). + + Once the instance is in the ``manual`` election mode, + it acts like a ``voter`` most of the time, + but may trigger elections and become a leader when ``box.ctl.promote()`` is called. + When ``election_mode ~= 'manual'``, ``box.ctl.promote()`` replaces ``box.ctl.clear_synchro_queue()``, - which is now deprecated (:tarantool-issue:`3055`). + which is now deprecated. + LuaJIT ~~~~~~ -- Make LuaJIT memory profiler parser output more user-friendly +- The output of LuaJIT memory profiler parser has become more user-friendly (:tarantool-issue:`5811`). Now the source line definition where the event occurs is - much clearer: only source file name and allocation-related line are - presented, the function definition line number is omitted. Moreover, - event-related statistics are indicated with units. **Breaking - change**: Line info of the line function definition is saved in - symbol info table by field ``linedefined`` now and field ``name`` is - renamed to ``source`` with the respect to the Lua Debug API. -- Now memory profiler parser reports heap difference occurring during - the measurement interval (:tarantool-issue:`5812`). New memory profiler’s option - ``--leak-only`` shows only heap difference is introduced. New - built-in module ``memprof.process`` is introduced to perform memory - events post-processing and aggregation. Now to launch memory profiler - via Tarantool user should use the following command: - ``tarantool -e 'require("memprof")(arg)' - --leak-only /tmp/memprof.bin`` + much clearer: it only shows the source file name and allocation-related line, + and omits the line number of the function definition. + Moreover, event-related statistics are now indicated with units. + + **Breaking change**: Line info of the line function definition is now saved in + symbol info table by field ``linedefined``. + Field ``name`` has been renamed to ``source`` with the respect to the Lua Debug API. + +- A number of improvements in the memory profiler parser: + + * The parser now reports heap difference which occurs during + the measurement interval (:tarantool-issue:`5812`). + + * Use the option ``--leak-only`` to show only the heap difference. + + * New built-in module ``memprof.process`` performs post-processing and aggregation of + memory events. + + Run the memory profiler with the following command: + + .. code-block:: bash + + tarantool -e 'require("memprof")(arg)' - --leak-only /tmp/memprof.bin`` + Tools ~~~~~ -- Introduced tooling for crash artefacts collecting and postmortem - analysis (:tarantool-issue:`5569`). +- New tooling for collecting crash artefacts and postmortem analysis + (:tarantool-issue:`5569`). + Build ~~~~~ -- Updated CMake minimum required version in Tarantool build - infrastructure to 3.1. -- Drop autotools dependencies from RPM / Deb packages (follows up +- Tarantool build infrastructure now requires CMake version 3.1 or later. + +- Binary packages for Fedora 33 are now available (:tarantool-issue:`5502`) . + +- Binary packages for CentOS 6 and Debian Jessie won't be published since this version. + +- RPM and DEB packages no longer have the ``autotools`` dependency (follows up :tarantool-issue:`4968`). -- Stop publishing new binary packages for CentOS 6. -- Stop publishing new binary packages for Debian Jessie. -- Stop support of Mac OS 10.13 (disable regular testing). -- Publish binary packages for Fedora 33 (:tarantool-issue:`5502`). -- Bump built-in zstd version from v1.3.3 to v1.4.8 (part of :tarantool-issue:`5502`). -- Enable smtp and smtps protocols in bundled libcurl (:tarantool-issue:`4559`). -- Ship libcurl headers to system path “${PREFIX}/include/tarantool” in - the case of libcurl included as bundled library or static build + +- Regular testing on MacOS 10.13 has been disabled, effectively stopping + the support of this version. + +- The built-in ``zstd`` is upgraded from v1.3.3 to v1.4.8 + (part of :tarantool-issue:`5502`). + +- SMTP and SMTPS protocols are now enabled in the bundled ``libcurl`` (:tarantool-issue:`4559`). + +- The ``libcurl`` headers are now shipped to system path ``${PREFIX}/include/tarantool`` + when ``libcurl`` is included as a bundled library or in a static build (:tarantool-issue:`4559`). + Testing ~~~~~~~ -- We’re moving to GitHub Actions (:tarantool-issue:`5662`). -- Run single node Jepsen testing on per-push basis (:tarantool-issue:`5736`). -- Run fuzzing testing continuously on per-push basis (:tarantool-issue:`1809`). -- Implemented self-sufficient LuaJIT testing environment. As a result - LuaJIT build system is partially ported to CMake and all testing - machinery is enclosed within tarantool/luajit repository - (:tarantool-issue:`4862`, :tarantool-issue:`5470`). -- Switch to Python 3 by default in a test infrastructure. (:tarantool-issue:`5652`) +- Tarantool CI/CD has migrated to GitHub Actions (:tarantool-issue:`5662`). + +- Single node Jepsen testing now runs on per-push basis (:tarantool-issue:`5736`). + +- Fuzzing tests now continuously run on per-push basis (:tarantool-issue:`1809`). + +- 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 (:tarantool-issue:`4862`, :tarantool-issue:`5470`). + +- Python 3 is now the default in the test infrastructure (:tarantool-issue:`5652`). + Bugs fixed ---------- -.. _core-1: - Core ~~~~ -- Fix skipping index part options in case field type is not specified +- The index part options are no longer skipped when the field type is not specified (:tarantool-issue:`5674`). -- Fix lbox_ctl_is_recovery_finished(): in some cases it might return - true even if recovery was still in the progress. -- Fixed memory corruption in netbox. Because of the wrong order of the - ffi.gc and ffi.cast calls memory of struct error, which was still - used, was freed -- Fix a bug in relay timing out while replica is joining or syncing - with master (:tarantool-issue:`5762`). -- Fixed missing “path” value of index schema fetched by netbox + +- The ``lbox_ctl_is_recovery_finished()`` function no longer returns ``true`` + when 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 ``ffi.gc`` and ``ffi.cast`` calls. + +- Relay can no longer time out while a replica is joining or syncing with the master. + (:tarantool-issue:`5762`). + +- An issue with missing "path" value of index schema fetched by netbox has been fixed (:tarantool-issue:`5451`). + - Extensive usage of ``uri`` and ``uuid`` modules with debug log level - could lead to a crash or corrupted result of the functions from these - modules. Also their usage from the callbacks passed to ``ffi.gc()`` - could lead to the same but much easier. The same could happen with - some functions from the modules ``fio``, ``box.tuple``, ``iconv`` + 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 ``fio``, ``box.tuple``, and ``iconv`` (:tarantool-issue:`5632`). -- Introduce ``wal_cleanup_delay`` option to prevent early cleanup of - ``*.xlog`` files which are needed by replicas and lead to - ``XlogGapError`` (:tarantool-issue:`5806`). -- Fix a bug in applier erroring with ``Unknown request type 40`` during - final join when master has synchronous spaces (:tarantool-issue:`5566`). -- Fix 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 (:tarantool-issue:`5968`). -- Add memtx mvcc tracking of read gaps which fixes problem of phantom - reads (:tarantool-issue:`5628`). -- Fix wrong result of using space:count() with memtx mvcc (:tarantool-issue:`5972`). -- Fix dirty read after restart while using mvcc with synchronous + +- The new ``wal_cleanup_delay`` option can prevent early cleanup of + ``*.xlog`` files, needed by replicas. + Such cleanup used to result in a ``XlogGapError`` (:tarantool-issue:`5806`). + +- Appliers will no longer cause errors with ``Unknown request type 40`` during + a final join when the master has synchronous spaces (:tarantool-issue:`5566`). + +- Fixed a crash which occurred when reloading a compiled module when the new module + lacked some of the functions which were present in the former code. + This event triggered a fallback procedure where Tarantool restored old + functions, but instead of restoring each function it only processed a sole + entry, leading to a crash later when these restored functions were called + (:tarantool-issue:`5968`). + +- Added memtx MVCC tracking of read gaps which fixes the problem of phantom reads + (:tarantool-issue:`5628`). + +- Fixed the wrong result of using ``space:count()`` with memtx MVCC (:tarantool-issue:`5972`). + +- Fixed the dirty read after restart while using MVCC with synchronous replication (:tarantool-issue:`5973`). -.. _replication-1: Replication ~~~~~~~~~~~ -- Fix applier hang on a replica after it fails to process CONFIRM or - ROLLBACK message coming from a master. -- Fix master not sending anonymous replica some rows when it fell - behind and is trying to register. -- Fix the bug when a synchronous transaction could be confirmed and - visible on a replica, but then not confirmed / invisible again after - restart. Could happen more likely on memtx spaces with +- Fixed an issue with an applier hanging on a replica after failing to process + a ``CONFIRM`` or ``ROLLBACK`` message 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 ``memtx_use_mvcc_engine`` enabled (:tarantool-issue:`5213`). -- Fix recovery of a rolled back multi-statement synchronous transaction + +- 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 (:tarantool-issue:`5874`). -- Fix a bug in synchronous replication when rolled back transactions - could reappear once a sufficiently old instance reconnected + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance (:tarantool-issue:`5445`). -Swim -~~~~ -- Fix ``:broadcast()`` which does not work on non-local - addresses and spams “Permission denied” errors to the log. Also after - instance termination it could return a non-0 exit code even if there - was no errors in the script, and spam the error again (:tarantool-issue:`5864`). -- Fix the crash on an attempt to call ``swim:member_by_uuid()`` with no +Module swim +~~~~~~~~~~~ + +- Fixed an issue where ``: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 + (:tarantool-issue:`5864`). + +- Fixed the crash on attempts to call ``swim:member_by_uuid()`` with no arguments or with ``nil``/``box.NULL`` (:tarantool-issue:`5951`). -- Fix the crash on an attempt to pass an object of a wrong type to + +- Fixed the crash on attempts to pass an object of a wrong type to ``__serialize`` method of a swim member in Lua (:tarantool-issue:`5952`). -.. _luajit-1: LuaJIT ~~~~~~ -- Fixed memory profiler misbehaviour when Lua stack resize occurs +- Lua stack resizing no longer results in a wrong behaviour of the memory profiler (:tarantool-issue:`5842`). -- Fixed double ``gc_cdatanum`` decrementing in LuaJIT platform metrics - when a finalizer is set for GCcdata object (:tarantool-issue:`5820`). + +- Fixed a double ``gc_cdatanum`` decrementing in LuaJIT platform metrics + which occurred when a finalizer was set for a ``GCсdata`` object (:tarantool-issue:`5820`). + Lua ~~~ -- Fixed -e option, when tarantool always entered interactive mode when - stdin is a tty. Now, ``tarantool -e 'print"Hello"'`` doesn’t enter - interactive mode as it was before, just prints ‘Hello’ and exits +- Fixed the `-e` option, when ``tarantool`` used 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 (:tarantool-issue:`5040`). -- Fixed a leak of a tuple object in - ``key_def:compare_with_key(tuple, key)``, when serialization of the - key fails (:tarantool-issue:`5388`). + +- 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 (:tarantool-issue:`5388`). + SQL ~~~ -- The string received by the user-defined C or Lua function could be +- 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 - if the string passed from SQL contains ‘\\0’ (:tarantool-issue:`5938`). -- SQL SELECT or SQL UPDATE on UUID or DECIMAL field does not cause + when the string passed from SQL had contained ``\\0`` + (:tarantool-issue:`5938`). + +- ``SQL SELECT`` or ``SQL UPDATE`` on ``UUID`` or ``DECIMAL`` field will not cause a SEGMENTATION FAULT anymore (:tarantool-issue:`5011`, :tarantool-issue:`5704`, :tarantool-issue:`5913`). -- Fix wrong result of SELECT with GROUP BY in case one of selected - values is VARBINARY, which is not directly obtained from a space + +- Fixed an issue with wrong results of ``SELECT`` with ``GROUP BY`` which occurred + when one of the selected values was ``VARBINARY`` and not directly obtained from the space (:tarantool-issue:`5890`). -.. _build-1: Build ~~~~~ -- Fix building on FreeBSD (incomplete definition of type ‘struct - sockaddr’) (:tarantool-issue:`5748`). +- Fix building on FreeBSD (incomplete definition of type ``struct + sockaddr``) + (:tarantool-issue:`5748`). -- Don’t refetch already downloaded static build dependencies +- The already downloaded static build dependencies will not be fetched repeatedly (:tarantool-issue:`5761`). -- Make recovering with force_recovery option delete newer than snapshot - vylog files. So that instance can recover after incidents during - checkpoint (:tarantool-issue:`5823`). +- Recovering with ``force_recovery`` option now deletes vylog files which are newer than the snapshot. + It helps an instance recover after incidents during a checkpoint (:tarantool-issue:`5823`). -- Fixed libcurl configuring, when tarantool itself is configured with - ``cmake3`` command and there is no ``cmake`` command in PATH +- Fixed the ``libcurl`` configuring when Tarantool itself has been configured with + ``cmake3`` command and there was no ``cmake`` command in the ``PATH`` (:tarantool-issue:`5955`). - This affects building tarantool from sources with bundled libcurl (it + This affects building Tarantool from sources with bundled ``libcurl`` (it is the default mode).