Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions doc/release/3.5.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -113,19 +113,19 @@ if the ``fail_if`` expression evaluates to ``true``.
[CE] Faster large (500+) clusters reload
----------------------------------------

The new patch processes an instance's configuration only when it is explicitly accessed,
such as through a ``config:get(<...>, {instance = <...>})`` call. This significantly speeds up startup and
configuration reloads, especially for large clusters.
The new release processes an instance's configuration only when it is explicitly accessed,
such as through a ``config:get(<...>, {instance = <...>})`` call.
This significantly speeds up startup and configuration reloads, especially for large clusters.

.. _3-5-quorum-synchronous-replication:

[EE] Support of the quorum synchronous replication setup in three availability zones
------------------------------------------------------------------------------------
[EE] Support for quorum synchronous replication setup in three availability zones
---------------------------------------------------------------------------------

A new patchset makes the ``replication.failover = supervised`` mode supports the quorum synchronous
This release makes the ``replication.failover = supervised`` mode support quorum synchronous
replication setup in three availability zones.

The patchset includes several preliminary patches, which make the ``appoint_commit`` logic more safe
This release includes several preliminary patches, which make the ``appoint_commit`` logic more safe
in regards to various possible situations, and the main patch, which adds the ``box.ctl.promote()`` call to
``appoint_commit`` if the ``failover.replicasets.<replicaset_name>.synchro_mode`` is set to ``true``.

Expand All @@ -137,7 +137,7 @@ in regards to various possible situations, and the main patch, which adds the ``
When applying centralized configuration updates, Tarantool supervised failover coordinator no longer performs RW
switch within the replicaset if there are dead instances.

A new patch introduces a smarter configuration update process for the Tarantool supervised failover
This release introduces a smarter configuration update process for the Tarantool supervised failover
coordinator. Previously, any change would trigger a full restart of all services, causing unnecessary downtime.
Now, the system intelligently differentiates between option types: most settings can be applied dynamically without
any restart. A restart will only occur if you modify critical core parameters, specifically any options under
Expand All @@ -155,7 +155,7 @@ It is now possible to define a field with the ``decimal32/64/128/256`` type (fix
(``MP_DECIMAL``) in all engines (MemTX, Vinyl, MemCS, Quiver (if applicable)).
* The internal representation of fixed point decimal values remains the same as the exisitng decimal
type (decNumber) in all engines except MemCS and Quiver.
* It is now possible to batch insert and scan fixed point decimal values in the Arrow format
* It is now possible to batch insert and scan fixed point decimal values in the Apache Arrow format
in MemCS and Quiver engines.

.. _3-5-memcs-brin-indexes:
Expand All @@ -180,8 +180,8 @@ improvements of 2.5x for 10% filled columns and 11x for 1% filled columns.

.. _3-5-memcs-index-batch-insertion:

Secondary index batch insertion performance is improved in MemCS
----------------------------------------------------------------
[EE] Secondary index batch insertion performance is improved in MemCS
---------------------------------------------------------------------

This release introduces a new ``next_row`` method that significantly accelerates batch insertion and secondary
index building. The method replaces the old tuple-based iterator, using a column mask to process only necessary
Expand All @@ -190,8 +190,8 @@ index insertion has improved by over 550%, with rates jumping from ~10k to 62k r

.. _3-5-memcs-storage-string-scanning:

Storage format and string scanning performance improvements in MemCS
--------------------------------------------------------------------
[EE] Storage format and string scanning performance improvements in MemCS
-------------------------------------------------------------------------

This release combines a new optimized storage format for short strings with a powerful Arrow view layout to
deliver huge performance improvements for string scanning.
Expand All @@ -205,9 +205,9 @@ Storage format updates:
* The ``memcs_column_data_size()`` API function has been split into ``memcs_column_int_data_size()``
and ``memcs_column_ext_data_size()`` to account for the new dual storage format.

Scan performance for 3 different sets of strings (the lengths are randomly distributed in the range 1-12, 1-100, 1-1000)
and 2 different modes, ``notouch`` and ``touch``. In the ``notouch`` mode strings are only scanned as a batch, without
accessing them; in the ``touch`` mode, strings are scanned and the first external character is checked:
We ran scan performance tests for 3 different sets of strings (the lengths were randomly distributed in the ranges 1-12, 1-100, 1-1000)
and 2 different modes, ``notouch`` and ``touch``. In the ``notouch`` mode strings were only scanned as a batch, without
accessing them; in the ``touch`` mode, strings were scanned and the first external character was checked:

* Strings 1-12 chars: Up to 4.8x faster in the ``notouch`` mode, and 3.2x faster in the ``touch`` mode.
* Strings 1-100 chars: Up to 3.1x faster in the ``notouch`` mode, and 1.8x faster in the ``touch`` mode.
Expand Down
116 changes: 116 additions & 0 deletions doc/release/3.6.0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
Tarantool 3.6
=============

Release date: 2025-12-12

Releases on GitHub: :tarantool-release:`3.6.0`

The 3.6 release of Tarantool adds the following main product features and improvements
for the Community and Enterprise editions:

* **Community Edition (CE)**

* Memtx: significantly faster snapshot recovery.
* New privileges: ``grant`` and ``metagrant``.

* **Enterprise Edition (EE)**

* Failover coordinator: synchronous replication for 2 DC topology.
* MemCS: multiple improvements.

.. _3-6-faster-snapshot-recovery-ce:

[CE] Memtx: significantly faster snapshot recovery
--------------------------------------------------

This release speeds up memtx snapshot recovery by up to 70% by offloading MsgPack decoding
to a separate thread. Space and transactional triggers (``space.on_replace``, ``space.before_replace``)
are now deprecated during recovery.

.. _3-6-grant-metagrant-privileges-ce:

[CE] New privileges: ``grant`` and ``metagrant``
------------------------------------------------

This release introduces new privileges, ``grant`` and ``metagrant``. They allow Tarantool users
to create new users with a complete range of privileges, like the builtin ``admin`` user does.

The ``grant`` privilege allows granting any privilege, except ``grant`` and ``metagrant``, on an object, object class or universe.
The ``metagrant`` privilege allows granting ``grant`` and ``metagrant`` privileges.

Both ``grant`` and ``metagrant`` are only grantable on the universe and
allow granting privileges only to other users, not to the current user.

.. _3-6-sync-replication-2-dc-ee:

[EE] Failover coordinator: synchronous replication for 2 DC topology
--------------------------------------------------------------------

In previous releases, the failover coordinator supported synchronous replication
for topologies with data storages located in 3 and more data centers.
With N instances within a replica set, the minimal quorum size could be ``N/2 + 1``.
Topologies with 2 data centers were not supported because the quorum size could not be
dynamically decreased if connection to the second data center was lost.
For example, in a minimal replica set of 2 instances the default quorum size is 2
(calculated as 2/2 + 1 = 2).
If one of the instances fails, no new transactions can be committed, because it is
impossible to get an ack from the second instance.
So, new transactions are lost.

Now, for *supervised failover*, Tarantool supports synchronous replication for topologies
with data storages located in 2 data centers.
The failover coordinator automatically decreases the quorum size if connection
to the second data center is lost, and restores the cluster's operability within
the available data center.
When connection to the second data center is up again, the failover coordinator
automatically restores the normal quorum size.
So, no transactions are lost.

However, there are some limitations.
An important thing is that while data storages can be deployed in just 2 DCs,
we need yet another DC (a so-called "quorum DC") for an extra configuration storage
(based on etcd or Tarantool). So, the effective topology (also known as "2,5 DC topology")
implies 3 DCs all in all: two DCs with a complete set of components
(data storages, routers, configuration storages) + one DC with configuration storage.

Here are the cases when a topology with data storages deployed in 2 DCs may fail.

**Case #1:** "interrupted data enrichment after DC failure"

a. DC #1 goes down, while DC #2 is up. The failover coordinator decreases the quorum size
to 1. The cluster keeps serving the clients.
b. DC #1 goes up and starts obtaining missed data from DC #2. The quorum size is still 1.
c. The data enrichment process for DC #1 is still in progress, but DC #2 goes down now.
In this case, the cluster becomes unavailable.

**Case #2:** "no multiple quorum decrease"

a. DC #1 (2 instances) goes down, while DC #2 (2 instances) is up.
b. One of the 2 instances in DC #2 goes down.
In this case, the cluster becomes unavailable as well.

**Case #3:** Both DCs go down -- the ultimate case when the cluster becomes unavailable.

In other cases, the cluster will keep working.

.. _3-6-memcs-improvements:

[EE] MemCS: multiple improvements
---------------------------------

This release brings multiple minor enhancements to the MemCS engine, most of them
focusing on indexes and performance.

MemCS now supports:

* Aggregates over decimal fields,
* Inserting into the middle of MemCS primary index with aggregates,
* Specifying per-column layout in space format and secondary index definitions,
* ``index:quantile()``,
* Bloom aggregates,
* Statistics of index aggregates and scanner,
* Index aggregates exported to their Lua objects,
* Some C API improvements related to inserting and scanning data in the Apache Arrow format.

Furthermore, the performance of MemCS skip index writes is increased. Now this index
doesn't reallocate blocks if they are not used by any read view.
2 changes: 1 addition & 1 deletion doc/release/_images/releases_calendar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 8 additions & 1 deletion doc/release/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,14 @@ For information about earlier versions, see :doc:`eos_versions`.
- End of support
- Versions

* - :doc:`3.5 </release/3.5.0>`
* - :doc:`3.6 </release/3.6.0>`
- **December 12, 2025**
- **Not planned yet**
- **Not planned yet**
- | :tarantool-release:`3.6.0`

* - :doc:`3.5 </release/3.5.0>`
- **August 27, 2025**
- **Not planned yet**
- **Not planned yet**
- | :tarantool-release:`3.5.0`
Expand Down Expand Up @@ -93,6 +99,7 @@ For information about earlier versions, see :doc:`eos_versions`.
:maxdepth: 1

policy
3.6.0
3.5.0
3.4.0
3.3.0
Expand Down