Skip to content

Commit

Permalink
Generate changelog for 2.7.3
Browse files Browse the repository at this point in the history
Two changelog entries were fixed to resolve syntax errors.
  • Loading branch information
kyukhin committed Aug 19, 2021
1 parent 9ba8a4d commit dddf926
Show file tree
Hide file tree
Showing 48 changed files with 284 additions and 240 deletions.
284 changes: 284 additions & 0 deletions changelogs/2.7.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
Date: 2021-08-19

Tag: 2.7.3

## Overview

2.7.3 is the second [stable][release_policy] version of the 2.7 release
series. It introduces six improvements and resolves 49 bugs since
2.7.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][issues] on GitHub.

[release_policy]: https://www.tarantool.io/en/doc/latest/release/legacy-policy/
[issues]: https://github.com/tarantool/tarantool/issues

## Compatibility

Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary data
layout, client-server protocol, and replication protocol.

[Upgrade][upgrade] using the `box.schema.upgrade()` procedure to unlock
all the new features of the 2.x series.

[upgrade]: https://www.tarantool.io/en/doc/latest/book/admin/upgrades/

## New and updated features

### Core

* Provide information about state of synchronous replication via
`box.info.synchro` interface (gh-5191).

### LuaJIT

* Introduced support for `LJ_DUALNUM` mode in `luajit-gdb.py` (gh-6224).

### Lua

* The new method `table.equals` compares two tables by value with respect to the
`__eq` metamethod.

### SQL

* Descriptions of type mismatch error and inconsistent type error have become more
informative (gh-6176).

* Removed explicit cast from `BOOLEAN` to numeric types and vice versa (gh-4770).

* Removed explicit cast from `VARBINARY` to numeric types and vice versa (gh-4772,
gh-5852).

* Fixed a bug due to which a string that is not `NULL` terminated could not be
cast to `BOOLEAN`, even if the conversion should be successful according to the
rules.

### Build

* Fedora 34 builds are now supported. (gh-6074)

* Fedora 28 and 29 builds are no longer supported.

## Bugs fixed

### Core

* **\[Breaking change\]** `fiber.wakeup()` in Lua and `fiber_wakeup()` in C became
NOP on the currently running fiber. Previously they allowed to "ignore" the
next yield or sleep, which resulted in unexpected spurious wake-ups.
Calling these functions right before `fiber.create()` in Lua or `fiber_start()` in C
could lead to a crash (in debug build) or undefined behaviour (in release build). (gh-6043)

There was a single use case for the previous behaviour: rescheduling in the same event loop
iteration, which is not the same as `fiber.sleep(0)` in Lua and
`fiber_sleep(0)` in C. This could be done in the following way:

in C:
```C
fiber_wakeup(fiber_self());
fiber_yield();
```
and in Lua:
```Lua
fiber.self():wakeup()
fiber.yield()
```

To get the same effect in C, one can now use `fiber_reschedule()`.
In Lua it is now impossible to directly reschedule the current fiber in the same event loop
iteration.
There is a way to reschedule self through a second fiber, but we strongly discourage doing so:

```Lua
-- don't use this code
local self = fiber.self()
fiber.new(function() self:wakeup() end)
fiber.sleep(0)
```

* Fixed memory leak on each `box.on_commit()` and `box.on_rollback()` (gh-6025).

* `fiber_join()` now checks if the argument is a joinable fiber.
Abscence of this check could lead to unpredictable results.
Note that the issue affects C level only;
in Lua interface `fiber:join()` the protection is
turned on already.

* Now Tarantool yields when scanning `.xlog` files for the latest applied vclock
and when finding the right place in `.xlog`s to start recovering. This means
that the instance becomes responsive right after `box.cfg` call even when an empty
`.xlog` was not created on the previous exit.

This also prevents relay from timing out when a freshly subscribed replica
needs rows from the end of a relatively long (hundreds of MBs) `.xlog`
(gh-5979).

* The counter in `x.yM rows processed` log messages will no longer reset on each newly
recovered `xlog`.

* Fixed invalid results produced by `json` module's `encode` function when it
was used from the Lua garbage collector.
For instance, this could happen in functions used as `ffi.gc()`. (gh-6050)

* Fixed a bug when memtx mvcc crashed during reading uncommitted DDL. (gh-5515)

* Fixed a bug when memtx mvcc crashed if an index was created in transaction (gh-6137)

* Fixed a crash in MVCC during simultaneous update of a key in different transactions (gh-6131)

* Fixed segmentation fault with mvcc when entire space was updated concurrently (gh-5892)

* Fixed 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 (gh-5968).

* Fixed a bug with failed assertion after stress update of the same key. (gh-6193)

* Fixed a crash if you call box.snapshot during an incomplete transaction (gh-6229)

* Fixed console client connection breakage if request times out (gh-6249).

* Added missing broadcast to net.box.future:discard() so that now fibers
waiting for a request result are woken up when the request is discarded
(gh-6250).

* `box.info.uuid`, `box.info.cluster.uuid`, and `tostring(decimal)` with any
decimal number in Lua sometimes could return garbage if `__gc` handlers are
used in user's code (gh-6259).

* Fixed an error message that happened in very specific case
during mvcc operation (gh-6247)

* Fixed a repeatable read violation after delete (gh-6206)

* Fixed a bug when hash select{} was not tracked by mvcc engine (gh-6040)

* Fixed a crash in mvcc after drop of a space with several indexes (gh-6274)

* Fixed a bug when GC at some state could leave tuples in secondary indexes (gh-6234)

* Disallowed yields after DDL operations in MVCC mode. It fixes crash which takes
place in case several transactions refer to system spaces (gh-5998).

* Fixed bug in MVCC connected which happens on rollback after
DDL operation (gh-5998).

* Fixed a bug when rollback resulted in unserializable behaviour (gh-6325)

### Vinyl

* Fixed possible keys divergence during secondary index build which might
lead to missing tuples in it (gh-6045).

* Fixed a race between Vinyl garbage collection and compaction resulting in
broken vylog and recovery (gh-5436).

### Replication

* Fixed use after free in relay thread when using elections (gh-6031).

* Fixed a possible crash when a synchronous transaction was followed by an
asynchronous transaction right when its confirmation was being written
(gh-6057).

* Fixed an error when a replica, at attempt to subscribe to a foreign cluster
(with different replicaset UUID), didn't notice it is not possible, and
instead was stuck in an infinite retry loop printing an error about "too
early subscribe" (gh-6094).

* Fixed an error when a replica, at attempt to join a cluster with exclusively
read-only replicas available, instead of failing or retrying just decided to
boot its own replicaset. Now it fails with an error about the other nodes
being read-only so they can't register it (gh-5613).

* When an error happened during appliance of a transaction received from a
remote instance via replication, it was always reported as "Failed to write
to disk" regardless of what really happened. Now the correct error is shown.
For example, "Out of memory", or "Transaction has been aborted by conflict",
and so on (gh-6027).

* Fixed replication stopping occasionally with `ER_INVALID_MSGPACK` when replica
is under high load (gh-4040).

* Fixed a cluster sometimes being unable to bootstrap if it contains nodes with
`election_mode` `manual` or `voter` (gh-6018).

* Fixed a possible crash when `box.ctl.promote()` was called in a cluster with
>= 3 instances, happened in debug build. In release build it could lead to
undefined behaviour. It was likely to happen if a new node was added shortly
before the promotion (gh-5430).

* Fixed a rare error appearing when MVCC (`box.cfg.memtx_use_mvcc_engine`) was
enabled and more than one replica was joined to a cluster. The join could fail
with the error `"ER_TUPLE_FOUND: Duplicate key exists in unique index
'primary' in space '_cluster'"`. The same could happen at bootstrap of a
cluster having >= 3 nodes (gh-5601).

### Raft

* Fixed a rare crash with the leader election enabled (any mode except `off`),
which could happen if a leader resigned from its role at the same time as some
other node was writing something related to the elections to WAL. The crash
was in debug build and in the release build it would lead to undefined
behaviour (gh-6129).

* Fixed an error when a new replica in a Raft cluster could try to join from a
follower instead of a leader and failed with an error `ER_READONLY` (gh-6127).

### LuaJIT

* Fixed optimization for single-char strings in `IR_BUFPUT` assembly routine.

* Fixed slots alignment in `lj-stack` command output when `LJ_GC64` is enabled
(gh-5876).

* Fixed dummy frame unwinding in `lj-stack` command.

* Fixed detection of inconsistent renames even in the presence of sunk values
(gh-4252, gh-5049, gh-5118).

* Fixed the order VM registers are allocated by LuaJIT frontend in case of
`BC_ISGE` and `BC_ISGT` (gh-6227).

### Lua

* When error is raised during encoding call results, auxiliary lightuserdata
value is not removed from the main Lua coroutine stack. Prior to the fix it
leads to undefined behaviour during the next usage of this Lua coroutine
(gh-4617).

* Fixed Lua C API misuse, when the error is raised during call results encoding
on unprotected coroutine and expected to be catched on the different one, that
is protected (gh-6248).

#### Triggers

* Fixed possibility crash in case when trigger removes itself.
Fixed possibility crash in case when someone destroy trigger,
when it's yield (gh-6266).

### SQL

* User-defined functions can now return VARBINARY to SQL as result (gh-6024).

* Fixed assert on cast of DOUBLE value that greater than -1.0 and less than 0.0
to INTEGER and UNSIGNED (gh-6255).

* Removed spontaneous conversion from INTEGER to DOUBLE in a field of type
NUMBER (gh-5335).

* All arithmetic operations can now only accept numeric values (gh-5756).

### MVCC

* Fix MVCC interaction with ephemeral spaces: TX manager now ignores such
spaces (gh-6095).

* Fixed a loss of tuple after a conflict exception (gh-6132)

* Fixed a segfault in update/delete of the same tuple (gh-6021)
4 changes: 0 additions & 4 deletions changelogs/unreleased/box-info-limbo.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/fix-error-on-return-bin-from-funcs.md

This file was deleted.

8 changes: 0 additions & 8 deletions changelogs/unreleased/fix-module-reload.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-4040-invalid-msgpack.md

This file was deleted.

8 changes: 0 additions & 8 deletions changelogs/unreleased/gh-4470-explicit-cast.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-5118-fix-inconsistent-renames.md

This file was deleted.

This file was deleted.

6 changes: 0 additions & 6 deletions changelogs/unreleased/gh-5430-promote-quorum-crash.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-5436-vylog-gc-during-compaction.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-5515-some-mvcc-crash.md

This file was deleted.

7 changes: 0 additions & 7 deletions changelogs/unreleased/gh-5601-cluster-mvcc-duplicate.md

This file was deleted.

6 changes: 0 additions & 6 deletions changelogs/unreleased/gh-5613-bootstrap-prefer-booted.md

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-5892-segmentaion-fault-in-mvcc.md

This file was deleted.

12 changes: 0 additions & 12 deletions changelogs/unreleased/gh-5979-recovery-yield.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelogs/unreleased/gh-6018-election-boot-voter.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-6025-box.on_commit-leak.md

This file was deleted.

7 changes: 0 additions & 7 deletions changelogs/unreleased/gh-6027-applier-lost-error.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelogs/unreleased/gh-6031-relay-use-after-free.md

This file was deleted.

0 comments on commit dddf926

Please sign in to comment.