Date: 2023-05-24
Tag: 2.10.7

## Overview

2.10.7 is the 8th [stable][release_policy] version of the 2.10 release
series. It resolves 17 bugs since 2.10.6.

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/dev_guide/release_management/#release-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.

Please [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/

## Bugs fixed

### Core

* Fixed a crash that could happen when preparing a crash report on macOS
  (gh-8445).
* Fixed an integer overflow issue in `net.box` (ghs-121).
* An `IPROTO_EVENT` packet now has the same sync number as the last
  corresponding `IPROTO_WATCH` request (gh-8393).
* Fixed a bug because of which a dirty (not committed to WAL) DDL record could
  be written to a snapshot and cause a recovery failure (gh-8530).

### Replication

* Fixed a bug that occurred on applier failure: a node could start an election
  without having a quorum to do this (gh-8433).
* Now if a join fails with some non-critical error, such as `ER_READONLY`,
  `ER_ACCESS_DENIED`, or something network-related, the instance tries
  to find a new master to join off and tries again (gh-6126, gh-8681).

* States when joining a replica are renamed. Now the value of
  `box.info.replication[id].upstream.status` during join can be either
 `wait_snapshot` or `fetch_snapshot` instead of `initial_join` (gh-6126).
* Fixed replicaset bootstrap getting stuck on some nodes with `ER_READONLY` when
  there are connectivity problems (gh-7737, gh-8681).
* Fixed a bug when a replicaset state machine that is tracking the number
  of appliers according to their states could become inconsistent during
  reconfiguration (gh-7590).

### LuaJIT

Backported patches from vanilla LuaJIT trunk (gh-8069). In the scope of this
activity, the following issues have been resolved:

* Fixed `emit_rma()` for x64/GC64 mode for non-`mov` instructions.
* Limited Lua C library path with the default `PATH_MAX` value of 4096 bytes.
  Backported patches from the vanilla LuaJIT trunk (gh-8516). The following issues
  were fixed as part of this activity:

* Fixed assembling of `IR_LREF` assembling for GC64 mode on x86_64.

### SQL

* Fixed an assertion when selecting tuples with incomplete internal
  format (gh-8418).
* Fixed integer overflow issues in built-in functions (ghs-119).
* Fixed a possible assertion or segmentation fault when optimizing
  `INSERT INTO ... SELECT FROM` (gh-8661).
* Fixed an integer overflow issue and added check for the `printf()` failure due
  to too large size (ghs-122).

### Datetime

* Fixed an error in `datetime.set` when `timestamp` is passed along with `nsec`,
 `usec`, or `msec` (gh-8583).
* Fixed errors when the string representation of a datetime object had
 a negative nanosecond part (gh-8570).

### Build

* Enabled compiler optimizations for static build dependencies, which were
  erroneously disabled in version 2.10.3 (gh-8606).
