2.10.8
Date: 2023-09-14
Tag: 2.10.8
Overview
2.10.8 is the ninth stable version of the 2.10 release
series. It introduces 5 improvements and resolves 28 bugs since
2.10.7.
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 on GitHub.
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 using the box.schema.upgrade()
procedure to unlock
all the new features of the 2.x series.
Functionality added or changed
Box
- The maximum length of
box.cfg{}
string parameters is now 512 instead of 256.
Test
Fuzz
- LuaJIT now can be fuzzed using grammar-based fuzzer (gh-4823).
Build
- Hardening against memory corruption attacks is now enabled by default on
FreeBSD (gh-7536). - Added the CMake option
FIBER_STACK_SIZE
to set the default fiber stack size. - Updated libcurl to version 8.3.0.
Bugs fixed
Core
- Fixed a bug when Tarantool failed to decode a request containing an unknown
IPROTO key. The bug resulted in broken connectivity between Tarantool 2.10
and 2.11 (gh-8745). - Fixed a bug causing the
ER_CURSOR_NO_TRANSACTION
failure for transactions
on synchronous spaces when theon_commit/on_rollback
triggers are set
(gh-8505). - Fixed a bug causing the effective session and user are not propagated to
box.on_commit
andbox.on_rollback
trigger callbacks when transaction
is synchronous (gh-8742). - Fixed a crash that could happen when Tarantool is started in the
background mode
(gh-6128). - Fixed a bug when MVCC sometimes lost gap record (gh-8326).
- Fixed a bug when MVCC rollback of prepared statement could break internal
invariants (gh-8648). - Now MVCC engine automatically aborts a transaction if it reads changes
of a prepared transaction and this transaction is aborted (gh-8654). - Fixed a bug that caused writing incorrect values into the
stream_id
field
of xlog headers (gh-8783). - Fixed a bug when a space that is referenced by a foreign key could not
be truncated even if the referring space was empty (gh-8946). - Fixed a crash that could happen when Tarantool is compiled by
clang
version 15 and above with enabled AddressSanitizer
(tarantool/tarantool-qa#321). - Fixed a use-after-free bug in iproto server code (gh-9037).
- Fixed a heap-buffer-overflow bug in fiber creation code (gh-9026).
Memtx
- Fixed a heap-use-after-free bug in the transaction manager, which could occur
when performing a DDL operation concurrently with a transaction on the same
space (gh-8781).
Vinyl
- Fixed a heap-use-after-free bug in the Vinyl read iterator caused by a race
between a disk read and a memory dump task. The bug could lead to a crash or
an invalid query result (gh-8852).
Replication
- Fixed a possible failure to promote the desired node by
box.ctl.promote()
on
a cluster with nodes configured withelection_mode = "candidate"
(gh-8497). - Fixed nodes configured with
election_mode = 'candidate'
spuriously detecting
a split-vote when another candidate should win with exactly a quorum of votes
for it (gh-8698).
LuaJIT
Backported patches from the vanilla LuaJIT trunk (gh-8516). The following issues
were fixed as part of this activity:
-
Fixed canonicalization of +-0.0 keys for
IR_NEWREF
. -
Fixed result truncation for
bit.rol
on x86_64 platforms. -
Fixed
lua_yield()
invocation inside C hooks. -
Fixed memory chunk allocation beyond the memory limit.
-
Fixed TNEW load forwarding with instable types.
-
Fixed use-def analysis for
BC_VARG
,BC_FUNCV
.
Backported patches from the vanilla LuaJIT trunk (gh-8825). The following issues
were fixed as part of this activity: -
Fixed
BC_UCLO
insertion for returns. -
Fixed recording of
BC_VARG
with unused vararg values. -
Initialization instructions on trace are now emitted only for the first
member of a union. -
Prevent integer overflow while parsing long strings.
-
Fixed various
^
operator andmath.pow()
function inconsistencies. -
Fixed parsing with predicting
next()
andpairs()
. -
Fixed binary number literal parsing. Parsing of binary number with a zero
fractional part raises error too now. -
Fixed load forwarding optimization applied after table rehashing.
-
Fixed recording of the
BC_TSETM
.
Lua
- Fixed the xlog reader Lua module to show unknown row header fields. Before
this change the xlog reader silently skipped them.
Netbox
- Fixed a heap-use-after-free bug in the function creating a tuple format Lua
object fornet.box
(gh-8889).
Box
- Fixed the memory leaks caused by the multi-statement transaction errors in the
space index building and the space format checking operations (gh-8773). - Fixed a bug in the box console implementation because of
which thelanguage
parameter was shared between connected
clients (gh-8817). - Fixed an invalid memory access in a corner case of a specialized comparison
function (gh-8899).
Console
- Fixed console ignoring
-i
flag in case stdin is not a tty (gh-5064).
Datetime
- Fixed a bug raising a false positive error when creating new intervals with
range boundary values (gh-8878). - Fixed a bug with buffer overflow in tnt_strptime (gh-8502).
Http
- Fixed a streaming connection stuck if etcd is stopped
unexpectedly (gh-9086).
Msgpack
- Fixed decoding datetime intervals with fields larger than possible int32
values (gh-8887).