Tarantool 2.10.5
Released on 2023-02-20.
- Release: v. 2.10.5.
- Tag:
2.10.5
.
2.10.5 is the sixth stable version of the 2.10 release series. It introduces 5 improvements and resolves 44 bugs since 2.10.4.
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.
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.
- Introduced the
_vspace_sequence
system space view of the_space_sequence
system space (gh-7858). - The log produced during
box.cfg{}
now contains the build target triplet (for example,Linux-x86_64-RelWithDebInfo
).
- OpenSUSE 15.1 and 15.2 are no longer supported.
- Updated libcurl to version 7.87.0 (gh-8150).
- Alpine Linux 3.16 is now supported.
- Fixed a bug in fiber switching that could lead to a segmentation fault error on AArch64 systems (gh-7523, gh-7985).
- Fixed wrong CPU architecture reported in
tarantool.build.target
on M1/M2 Macs (gh-7495). - Fixed a bug when fields could be removed from a table stored in a
variable when a logging function was called on this variable (for
example,
log.info(a)
) (gh-3853). - Fixed a logging bug: when logging tables with fields that have
reserved internal names (such as
pid
) in the plain log format, such fields weren’t logged (gh-3853). - Added the
message
field when logging tables without such field in the JSON log format (gh-3853). - Fixed an assertion on malformed JSON message written to the log (gh-7955).
- Fixed the bug because of which
box.session.on_auth
triggers were not invoked if the authenticated user didn’t exist (gh-8017). - Eliminated the possibility of user enumeration by analyzing errors sent in reply to malformed authentication requests (ghs-21).
- Fixed a bug when Tarantool could execute random bytes as a Lua code after fork on systems with a glibc version earlier than 2.29 (gh-7886).
- A referenced space or a function being used in a constraint can now be dropped in the same transaction with the referencing constraint or space (gh-7339).
- Fixed Tarantool being stuck during a crash on macOS (gh-8023).
- Fixed a bug that prevented collection of crash reports (gh-8083).
- Fixed a crash in
net.box
that happened if the error message raised by the server containedprintf
formatting specifiers, such as%d
or%s
(gh-8043). - Fixed read-only statements executing successfully in transactions that were aborted by yield or timeout. Now, read-only statements fail in this case, just like write statements (gh-8123).
- Fixed a transaction conflict reported mistakenly when a key was deleted twice with MVCC engine enabled (gh-8122).
net.box
connections now contain information about sequences used by remote spaces (gh-7858).- Fixed a crash that happened if a transaction was aborted (for
example, by fiber yield with MVCC off) while the space’s
on_replace
orbefore_replace
trigger was running (gh-8027). - Fixed a possible crash when attempting to update the same field in
tuple/space/index:update()
more than once (gh-8216). - Fixed empty BITSET indexes crashing on
len
calls (gh-5809). - Fixed a crash when functional indexes were used with very specific chunk size (gh-6786).
- Fixed a possible repeatable read violation with reverse iterators (gh-7755).
- Fixed a crash on series of transactions in memtx (gh-7756).
- Fixed a phantom read that could happen after reads from different indexes followed by a rollback (gh-7828).
- Fixed an assert in the MVCC engine (gh-7945).
- Fixed an assertion failure in MVCC during statement preparation (gh-8104).
- Fixed possible loss of a committed tuple after rollback of a prepared transaction (gh-7930).
- Fixed a bug that could result in
select()
skipping an existing tuple after a rolled backdelete()
(gh-7947).
- Fixed local space writes failing with error
Found uncommitted sync transactions from other instance with id 1
when synchronous transaction queue belongs to another instance and isn’t empty (gh-7592). - Fixed an assertion failure on master when a replica resubscribes with a smaller vclock than previously seen (gh-5158).
- A warning is now raised when
replica_id
is changed by abefore_replace
trigger while adding a new replica. Previously, there was an assertion checking this (gh-7846). - Fixed a segmentation fault that happened when a
before_replace
trigger set on space_cluster
returned nil (gh-7846). - Fixed possible transaction conflict errors on applying a replication stream (gh-8121).
Backported patches from vanilla LuaJIT trunk (gh-7230). In the scope of this activity, the following issues have been resolved:
- Fix
io.close()
for already closed standard output. - Fix trace execution and stitching inside vmevent handler (gh-6782).
- Fixed
emit_loadi()
on x86/x64 emitting xor between condition check and jump instructions. - Fix stack top for error message when raising the OOM error (gh-3840).
- Enabled external unwinding on several LuaJIT platforms. Now it is possible to handle ABI exceptions from Lua code (gh-6096).
- Disabled math.modf compilation due to its rare usage and difficulties with proper implementation of the corresponding JIT machinery.
- Fixed inconsistent behaviour on signed zeros for JIT-compiled unary minus (gh-6976).
- Fixed
IR_HREF
hash calculations for non-string GC objects for GC64. - Fixed assembling of type-check-only variant of
IR_SLOAD
. - Enabled the platform profiler for Tarantool built with GC64 mode (gh-7919).
- Added full-range lightuserdata support to the
luajit-gdb.py
extension (gh-6481).
Backported patches from vanilla LuaJIT trunk (gh-8069). In the scope of this activity, the following issues have been resolved:
- Fixed loop realigment for dual-number mode
- Fixed os.date() for wider libc strftime() compatibility.
- Fix interval parsing for sysprof for dual-number mode.
- Fixed alias detection in the YAML serializer in case the input
contains objects that implement the
__serialize
meta method (gh-8240).
- Fixed a possible error during rollback of read-only transaction statements (gh-5501).
- Fixed a bug in
space_object:create_index()
whencollation
option is not set. Now it is inherited from the space format (gh-5104). - Eliminated a code injection vulnerability in the processing of the
replication_synchro_quorum
box.cfg()
option (ghs-20, GHSA-74jr-2fq7-vp42).
- Fixed a segmentation fault that happened when the value passed to the
%f
modifier ofdatetime_object:format()
was too big (ghs-31).
- Fixed the assertion fail in
cord_on_yield
(gh-6647).
- Fixed an incorrect facility value in syslog on Alpine and OpenBSD (gh-8269).
- Fixed
-Werror
build fail on Clang 15 (gh-8110).