-
Notifications
You must be signed in to change notification settings - Fork 380
Commit
Also, remove unreleased/ entries and add missing downgrade versions to the downgrade versions list. NO_DOC=changelog NO_TEST=changelog NO_CHANGELOG=changelog
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
3.3.0 | ||
|
||
Date: 2024-11-29 | ||
Tag: 3.3.0 | ||
|
||
## Overview | ||
|
||
3.3.0 is the first [stable][release_policy] version of the 3.3 release | ||
series. It introduces 31 improvements and resolves 24 bugs since | ||
3.2.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][issues] on GitHub. | ||
|
||
[release_policy]: https://www.tarantool.io/en/doc/latest/release/policy/ | ||
[issues]: https://github.com/tarantool/tarantool/issues | ||
|
||
## Compatibility | ||
|
||
Tarantool 3.x is backward compatible with Tarantool 2.11.x in the binary data | ||
layout, client-server protocol, and replication protocol. | ||
|
||
Please [upgrade][upgrade] using the `box.schema.upgrade()` procedure to unlock | ||
all the new features of the 3.x series. | ||
|
||
[upgrade]: https://www.tarantool.io/en/doc/latest/book/admin/upgrades/ | ||
|
||
## Functionality added or changed | ||
|
||
### Core | ||
|
||
* Added the `box.ctl.wal_sync()` function, which waits until | ||
all submitted writes are successfully flushed to the disk. | ||
Throws an error if a write fails. After the function is | ||
executed one may reliably use `box.info.vclock` for comparisons | ||
when choosing a new master (gh-10142). | ||
* Allowed DDL before calling `box.schema.upgrade` since schema version 2.11.1. | ||
Creating persistent trigger is forbidden until schema version 3.1.0. | ||
Using persistent names is allowed since schema version 2.11.5 (gh-10520). | ||
* Added the `dd_version` field to the `box.status` system event (gh-10546). | ||
* New public C API functions `tnt_tx_push(callback)` and `tnt_tx_flush()` | ||
allow to send work to TX thread from any other thread. | ||
* Exposed the `box_slab_info()` function via C module API. | ||
* Added support for asynchronous wait modes (`box.commit{wait = ...}`) to | ||
synchronous transactions. Changes committed this way can be observed with the | ||
`read-committed` isolation level. Such transactions will not get | ||
rolled back due to `replication_synchro_timeout` (gh-10583). | ||
|
||
|
||
### Memtx | ||
|
||
* Improved the performance of tree index methods: the `select()` method with `offset` | ||
specified and the `count()` method. The underlying algorithm for these methods is | ||
changed: the old algorithm's time complexity was `O(n)`, where `n` is the value of | ||
`offset` or the amount of counted tuples. The new algorithm's complexity is | ||
`O(log(size))`, where `size` is the number of tuples stored in the index. Now | ||
it does not depend on the `offset` value or the amount of tuples to count. It | ||
is safe to use these functions with arbitrary big offset values and tuple | ||
count (gh-8204). | ||
* Now DDL operations abort only transactions related to the space that | ||
they are modifying (gh-10377). | ||
|
||
### Replication | ||
|
||
* Now all replicas have WAL GC consumers persisted in the `_gc_consumers` | ||
space (gh-10154). The `wal_cleanup_delay` option is no longer needed, | ||
so it is deprecated. | ||
* A new compat option `compat.replication_synchro_timeout` has been added. | ||
This option determines whether the `replication.synchro_timeout` option rolls | ||
back transactions. When set to 'new', transactions are not rolled back due to | ||
a timeout. In this mode `replication.synchro_timeout` is used to wait | ||
for confirmation in promote/demote and gc-checkpointing. If 'old' is set, the | ||
behavior is no different from what it was before this patch appeared. | ||
* A new `replication.synchro_queue_max_size` option limits the number of | ||
transactions in the master synchronous queue. | ||
`replication.synchro_queue_max_size` is measured in the number of bytes to be | ||
written (0 means unlimited, which was the default behavior before). | ||
Currently, this option defaults to 16 megabytes. | ||
(gh-7486) | ||
* Added the `box.ctl.replica_gc` function that allows to clean up | ||
resources of a disconnected replica (gh-10755). | ||
* Now anonymous replicas retain required xlogs. Outdated anonymous replicas | ||
and their WAL GC state are deleted automatically when being disconnected | ||
for `box.cfg.replication_anon_ttl` seconds (gh-10755). | ||
|
||
### Lua | ||
|
||
* Introduced a new `offset` parameter in the `index:pairs` method. It allows to | ||
skip the first tuples of the iterator (gh-8204). | ||
* Introduced a new `index:offset_of` method. It allows to get the position in | ||
the index relative to the iterator direction of a tuple matching the given | ||
key and iterator (gh-8204). | ||
* Introduced a new `encode_key_order` option for the JSON encoder. It allows | ||
you to pass the order of keys in the resulting JSON string (gh-10606). | ||
* Introduced the `version` Lua module, which enables creation and | ||
comparison of version objects. The module eases the use of | ||
features blocked before `box.schema.upgrade` (gh-10521). | ||
|
||
### Config | ||
|
||
* Now users can specify the `lua_call` option to allow calling Lua functions | ||
even when the database is in read-only mode or has an outdated schema version | ||
(gh-10310). | ||
* Now, when running in the supervised failover mode, the instance | ||
with the highest priority is selected as the bootstrap leader by | ||
default (gh-10552). | ||
* Improved the error message about array data when a record or a map is | ||
expected (gh-10241, gh-10242). | ||
* `config:info()` and its alias `box.info.config` now has the `hierarchy` field | ||
that shows the configured instance, replica set, and group names (gh-10308). | ||
* Added the `isolated` option for instances (gh-10796). | ||
* Added the `lua.memory` parameter to set up the maximum available RAM for | ||
Lua scripts (gh-9849). | ||
* Added the `:jsonschema()` method to the `config` module. This method generates | ||
and returns the JSON schema of the cluster configuration, providing a detailed | ||
description of each field (gh-10636). | ||
* Introduced the `on_event` callback for roles (gh-10538). | ||
* Introduced public API for raising alerts (gh-10873). | ||
* Added the `replication.autoexpel` option (gh-10823). | ||
* Added the `<schema object>:jsonschema()` method to | ||
`experimental.config.utils.schema` for generating a JSON schema | ||
representation as a Lua table (gh-10636). | ||
|
||
### Connpool | ||
|
||
* `connpool.filter()` now works faster, especially in case there are | ||
unavailable instances (gh-10286). | ||
* Now `connpool.filter()` returns only alive instances by default. | ||
To use the old behavior and acquire all instances the new option | ||
`skip_connection_check` can be used (gh-10596). | ||
* The `connpool.call()` method now works faster in general when it works in | ||
modes different from `prefer_ro`/`prefer_rw` (gh-10598). | ||
|
||
## Bugs fixed | ||
|
||
### Core | ||
|
||
* Allow to downgrade without removing instance/replicaset/cluster names | ||
(gh-10150). | ||
* Fixed a bug when log entries did not contain the file name and line at some | ||
log levels in plain format (gh-9913). | ||
* Fixed a bug that prevented `update()` operations on fields with a | ||
fixed-size floating-point type (gh-9929). | ||
* The `bootstrap_leader` configuration option is now dynamic (gh-10604). | ||
* Fixed a bug when a server could crash if a client sent an IPROTO replication | ||
request without waiting for pending requests to complete (gh-10155). | ||
* Fixed a bug when the `drop_while` method of index iterators (`index:pairs()`, | ||
`space:pairs()`) dropped an extra element (gh-6403). | ||
* Added missing key value check for fixed integer types (gh-10777). | ||
* Fixed the crash caused by asynchronously committing an asynchronous | ||
transaction following a synchronous timed out transaction (gh-10853). | ||
|
||
|
||
### Memtx | ||
|
||
* Fixed a crash when a transaction that was processed concurrently with | ||
background index build was rolled back due to WAL failure (gh-10620). | ||
|
||
### Vinyl | ||
|
||
* Fixed a bug when `index.stat()` and `index.len()` could report a wrong number | ||
of in-memory statements for a non-unique multi-key index of a space with | ||
the `defer_deletes` option enabled (gh-10751). | ||
* Fixed a bug when a deleted tuple wasn't purged from a secondary index data | ||
stored on disk in case it was updated more than once in the same transaction. | ||
The bug couldn't result in inconsistent query results, but it could lead to | ||
performance degradation and increased disk usage (gh-10820, gh-10822). | ||
* Fixed a bug when joining a new replica to a master instance that experienced | ||
a heavy write load would severely degrade the master instance performance. | ||
The fix should also speed up long-running scan requests (gh-10846). | ||
|
||
### Replication | ||
|
||
* RAFT requests are now sent with 0 (not local) GROUP_ID (gh-10727). | ||
* Fixed a bug when the RAFT state wasn't sent during the `META_JOIN` stage, | ||
which could lead to split-brain (gh-10089). | ||
* Fixed a bug when master entered read-only mode and couldn't add new replicas | ||
to the replica set after replication reconfiguration (gh-10760). | ||
|
||
### Lua | ||
|
||
* Now `fun.chain` works correctly with iterators without `param`. | ||
* Now `fun.drop_while` supports stateful iterators. | ||
* Populated the `fun` module with the missing `maximum_by` alias | ||
of `max_by`. | ||
* Now `fun.nth` and `fun.length` work correctly with Luafun iterators. | ||
|
||
### SQL | ||
|
||
* Fixed a bug when an SQL count statement wasn't tracked by MVCC if it was | ||
the first in a transaction (gh-10825). | ||
|
||
### Config | ||
|
||
* Fixed the handling of the `log.modules` option removal (gh-10728). | ||
* Fixed the handling of the `wal.ext` option removal (ghe-963). | ||
* Fixed the handling of the `audit_log.spaces` option removal (ghe-964). | ||
|
||
### Upgrade | ||
|
||
* Automatically fix incorrect format of user-defined spaces and empty password | ||
for users during upgrade (gh-10180). |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.