Skip to content

Commit

Permalink
Generate changelog for 3.3.0
Browse files Browse the repository at this point in the history
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
sergepetrenko committed Nov 29, 2024
1 parent 805bfa7 commit 5fc82b8
Show file tree
Hide file tree
Showing 53 changed files with 204 additions and 230 deletions.
203 changes: 203 additions & 0 deletions changelogs/3.3.0.md
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).
4 changes: 0 additions & 4 deletions changelogs/unreleased/box-ctl-replica-gc.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/config-audit-log-spaces-removal.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/config-info-hierarchy.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/config-isolated-instance.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/config-log-modules-removal.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/config-replication-autoexpel.md

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/config-wal-ext-removal.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10089-raft-meta-join.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10150-downgrade-with-names.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10180-upgrade-from-1-6.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10286-faster-connpool-filter.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions changelogs/unreleased/gh-10521-introduce-version-module.md

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-10546-schema-version-broadcast.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10598-make-connpool-call-faster.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-10604-bootstrap-leader-dynamic.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10606-json-encode-key-order.md

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions changelogs/unreleased/gh-10636-cluster-config-json-schema.md

This file was deleted.

5 changes: 0 additions & 5 deletions changelogs/unreleased/gh-10636-generate-json-schema.md

This file was deleted.

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10760-rcq-booting-replica.md

This file was deleted.

This file was deleted.

6 changes: 0 additions & 6 deletions changelogs/unreleased/gh-10820-fix-vinyl-tx-stmt-overwrite.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-10825-sql-count-as-first-stmt.md

This file was deleted.

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-10873-alerts.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-6403-index-iterator-methods.md

This file was deleted.

7 changes: 0 additions & 7 deletions changelogs/unreleased/gh-6403-luafun-fixes.md

This file was deleted.

Loading

0 comments on commit 5fc82b8

Please sign in to comment.