Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
2.11.6 source code.tar.gz | 2025-02-24 | 8.7 MB | |
2.11.6 source code.zip | 2025-02-24 | 10.8 MB | |
README.md | 2025-02-24 | 7.2 kB | |
Totals: 3 Items | 19.5 MB | 0 |
Date: 2025-02-24 Tag: 2.11.6
Announcement: double
field type problems
Users who ever used the double
field type in vinyl indexes might have their
indexes broken. Regardless of this release. Preferably prior to the upgrade the
users must get rid of the double
indexed field type in vinyl. It must be
drop-in replaceable by the number
field type.
The reason is that the sorting of double
fields would always compare the field
values as C-language doubles, even when actual integers are stored. This works
fine for small numbers, but starting from 2^53 the double-style comparison
loses precision. For example, 18446744073709551615 and 18446744073709551614
would be considered the same values.
Besides, point-lookups in such index are going to be broken by design too - looking up by 18446744073709551615 can return 18446744073709551614 and many other integers around this point.
Unfortunately, even if the user doesn't have the double
type in any vinyl
indexes, but ever had it before, it is still unsafe. A double
index
altered to number
or scalar
would remain broken. It is very important that
users rebuild all the vinyl indexes that have or ever had the double
field
type in them. What is worse, just an alter double
-> number
won't
work. The old index must be dropped and a new one must be created. In any
order.
See more details in gh-9965 and gh-11017.
Overview
2.11.6 is the next stable release in the long-term support (LTS) version of the 2.11.x release series.
The label "stable" means there are 2.11.x-based applications running in production for quite a while without known crashes, incorrect results or other showstopper bugs.
This release resolves 32 issues since the 2.11.5 version.
Compatibility
Tarantool 2.11.x is backward compatible with Tarantool 1.10.x in 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.
Bugs fixed
Core
- 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
sequence:reset()
call result was not recovered after the server restart (gh-9871). - Fixed several bugs in the numbers comparison and hashing in tuple keys. It
allowed to insert the same key multiple times into a unique index, and
sometimes wouldn't allow to find an existing key in an index. Could happen
when numbers were encoded in MessagePack suboptimally and when the
double
field type was used (gh-9965). - Fixed the issue with hanging write operations forever triggered by heavy write load and WAL writing failures on cascade rollback (gh-11081).
Memtx
- Fixed a crash when memtx MVCC tried to abort an already committed non-memtx transaction if it used a system space view or tried to perform a DDL operation (gh-10715).
- Fixed a bug when Tarantool with memtx MVCC enabled was aborted on
workload with many
index:get()
operations reading nothing (gh-11022).
Vinyl
- 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 experiences a heavy write load severely degrades the master instance performance. The fix should also speed up long-running scan requests (gh-10846).
- Fixed a bug when a tuple could disappear from a multikey index in case it
replaced a tuple with duplicate multikey array entries created in the same
transaction. With the enabled
defer_deletes
space option, the bug could also trigger a crash (gh-10869, gh-10870). - Fixed a bug when the tuple cache was not properly invalidated in case
a WAL write error occurred while committing a
space.delete()
operation. The bug could lead to a crash or an invalid read query result (gh-10879). - Fixed a bug when a deleted secondary index key wasn't purged on compaction
of a space with the
defer_deletes
option enabled (gh-10895). - Fixed a bug in the tuple cache when a transaction operating in a read view could skip a tuple deleted after the read view creation (gh-11079).
- Fixed a bug in the tuple cache when a tuple could become inaccessible via a secondary index after a transaction rollback caused by a WAL write error (gh-11140).
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 anonymous replicas could participate in elections or even
be chosen as a leader. It is now forbidden to configure a replica so
that
replication_anon
istrue
andelection_mode
is notoff
(gh-10561).
LuaJIT
Backported patches from the vanilla LuaJIT trunk (gh-10709). The following issues were fixed as part of this activity:
- Fixed compilation of
getmetatable()
forio
objects. - Fixed dirty reads from recorded
IR_NOP
. - Fixed fusing optimization across
table.clear()
or insertion of a new key. - Disabled FMA optimization on aarch64 to avoid incorrect results in floating
point arithmetics. Optimization may be enabled for the JIT engine via the
command
jit.opt.start("+fma")
. - Fixed machine code zone overflow for trace recording on x86/x64.
- Fixed possible infinite loop during recording a chunk that uses upvalues.
- Fixed recording of
bit.bor()
/bit.bxor()
/bit.band()
with string arguments. - Fixed parsing of
for _ in
loop.
Backported patches from the vanilla LuaJIT trunk (gh-11055). The following issues were fixed as part of this activity:
- Fixed compiler warning in
setfenv()
/getfenv()
with negative levels as the argument. - Fixed register allocation for stores into sunk values (gh-10746).
- Fixed a crash when using a Lua C function as a vmevent handler for trace events.
- Fixed the compilation of
...
inselect()
.
log
- Fixed log message being truncated to 1024 bytes with JSON logger (gh-10918).
net.box
- Fixed a bug when the request counter used by a
net.box
client to implement the graceful shutdown protocol could underflow while it was fetching the schema from the remote end. In case of a debug build, the bug would crash the client. In case of a release build, the bug would result in a timeout while executing the remote server shutdown (gh-11062).
Build
- Ubuntu Noble (24.04) is now supported.