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.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..d365a31c8b --- /dev/null +++ b/doc/release/1.10.10.rst @@ -0,0 +1,92 @@ +Tarantool 1.10.10 +================= + +Released on 2021-04-21. + +* Release :tarantool-release:`1.10.10`. +* Tagged ``1.10.10-0-gaea7ae7`` + + +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 version :doc:`1.10.9 `. + +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 +~~~~~ + +- 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`). +- 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 + (:tarantool-issue:`5223`, :tarantool-issue:`5542`). +- 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 +~~~~~~~ + +- 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 +---------- + +Core +~~~~ + +- Extensive usage of ``uri`` and ``uuid`` modules with debug log level + no longer leads to crashes or corrupted results of the functions from these + modules. + Same problem is resolved for using these modules from the callbacks passed to ``ffi.gc()``, + and for some functions from the modules ``fio``, ``box.tuple``, and ``iconv`` + (:tarantool-issue:`5632`). + +Lua +~~~ + +- 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 +~~~~~ + +- 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 new file mode 100644 index 0000000000..faaf3def65 --- /dev/null +++ b/doc/release/2.6.3.rst @@ -0,0 +1,238 @@ +Tarantool 2.6.3 +=============== + +Released on 2021-04-21. + +* 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 version :doc:`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 +~~~~ + +- 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 +~~~~~~~~~~~ + +- 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. + + +Build +~~~~~ + +- 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`). + +- 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 +~~~~~~~ + +- 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 +~~~~ + +- 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 + 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`). + +- 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 +~~~~~~~~~~~ + +- 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`). + +- 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`). + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance + (:tarantool-issue:`5445`). + + +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`). + +- 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 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)``, + which had occurred when the serialization of the key failed (:tarantool-issue:`5388`). + + +SQL +~~~ + +- The string received by a user-defined C or Lua function will no longer be + different from the string passed to the function. This could happen + when the string passed from SQL had contained ``\\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`). + +- 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 +~~~~~~ + +- 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 +~~~~~ + +- Fix building on FreeBSD (incomplete definition of type ``struct + sockaddr``) + (:tarantool-issue:`5748`). + +- The already downloaded static build dependencies will not be fetched repeatedly + (:tarantool-issue:`5761`). + +- 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 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). diff --git a/doc/release/2.7.2.rst b/doc/release/2.7.2.rst new file mode 100644 index 0000000000..7e1b2e0a82 --- /dev/null +++ b/doc/release/2.7.2.rst @@ -0,0 +1,236 @@ +Tarantool 2.7.2 +=============== + +Released on 2021-04-21. + +* 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 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, +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 +~~~~ + +- 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 +~~~~~~~~~~~ + +- 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. + +Build +~~~~~ + + +- 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`). + +- 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 +~~~~~~~ + +- 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 +~~~~ + + +- The index part options are no longer skipped when the field type is not specified + (:tarantool-issue:`5674`). + +- 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 + 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`). + +- 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 +~~~~~~~~~~~ + +- 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`). + +- 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`). + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance + (:tarantool-issue:`5445`). + +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`). + +- 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 +~~~~~~ + +- Lua stack resizing no longer results in a wrong behaviour of the memory profiler + (:tarantool-issue:`5842`). + +- 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 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)``, + which had occurred when the serialization of the key failed (:tarantool-issue:`5388`). + +SQL +~~~ + +- The string received by a user-defined C or Lua function will no longer be + different from the string passed to the function. This could happen + when the string passed from SQL had contained ``\\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`). + +- 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`). + +- The already downloaded static build dependencies will not be fetched repeatedly + (:tarantool-issue:`5761`). + +- 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 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). \ No newline at end of file diff --git a/doc/release/2.8.1.rst b/doc/release/2.8.1.rst new file mode 100644 index 0000000000..99c0cae2a9 --- /dev/null +++ b/doc/release/2.8.1.rst @@ -0,0 +1,347 @@ +Tarantool 2.8.1 +=============== + +Released on 2021-04-21. + +* Release :tarantool-release:`2.8.1`. +* Tagged ``2.8.1-0-ge2a1ec0`` + +Overview +-------- + +2.8.1 is the :doc:`beta ` +version of the 2.8 release series. + +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: + +- 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 +------------- + +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 +~~~~ + +- 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`). + +- 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`). + +- The new ``box.lib`` module allows loading and executing C + stored procedures on read-only nodes (:tarantool-issue:`4642`). + +- 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 higher to lower: + + * ``box.cfg{}``, + * environment variables, + * ``tarantoolctl`` options, + * default values, + + +Replication +~~~~~~~~~~~ + +- 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. + + +LuaJIT +~~~~~~ + +- 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: 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 +~~~~~ + +- New tooling for collecting crash artefacts and postmortem analysis + (:tarantool-issue:`5569`). + + +Build +~~~~~ + +- 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`). + +- 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 +~~~~~~~ + +- 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 +~~~~ + +- The index part options are no longer skipped when the field type is not specified + (:tarantool-issue:`5674`). + +- 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 + 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`). + +- 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 +~~~~~~~~~~~ + +- 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`). + +- 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`). + +- Fixed a bug in synchronous replication when rolled back transactions + could reappear after reconnecting a sufficiently old instance + (:tarantool-issue:`5445`). + + +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`). + +- 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 +~~~~~~ + +- Lua stack resizing no longer results in a wrong behaviour of the memory profiler + (:tarantool-issue:`5842`). + +- 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 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)``, + which had occurred when the serialization of the key failed (:tarantool-issue:`5388`). + + +SQL +~~~ + +- The string received by a user-defined C or Lua function will no longer be + different from the string passed to the function. This could happen + when the string passed from SQL had contained ``\\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`). + +- 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`). + +- The already downloaded static build dependencies will not be fetched repeatedly + (:tarantool-issue:`5761`). + +- 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 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).