3.0.2
3.0.2
Date: 2024-04-16
Tag: 3.0.2
Overview
3.0.2 is the third stable version of the 3.0 release
series. It resolves 31 bugs since 3.0.1.
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 3.x is backward compatible with Tarantool 2.11.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 3.x series.
Bugs fixed
Core
- Fixed a bug when Tarantool could hang due to
box.watch
(gh-9632). - Fixed a crash on dropping a just accepted connection (gh-9717).
- The error messages are no longer stripped (gh-4975).
- Increased the maximum number of tuples in a hash index from 2147483648 (2^31)
to 4294967288 (2^32 - 8) (gh-9864). - Now all triggers either have a direct impact on the execution flow (for
example, closing a connection or throwing an error) or print a message to
the error log when they throw an error (gh-9309). - The
exclude_null
option is now supported by functional indexes (gh-9732). - Fixed a memory leak when dropping fully-temporary spaces (gh-9296).
- Fixed a bug that resulted in a crash when both MVCC and index with the
exclude_null
part were used (gh-9954).
Replication
- Fixed a bug when replication broke with
ER_PROTOCOL
when transactions ended
with a local space operation (gh-9491). - Fixed an issue when it was possible to use the
box_collect_confirmed_vclock
stack after return (gh-9505).
Raft
- Now the leader resigns on the first encounter with the
ER_WAL_IO
write error (gh-9399).
LuaJIT
Backported patches from the vanilla LuaJIT trunk (gh-9145, gh-9595). The
following issues were fixed as part of this activity:
- Limited exponent range in number parsing by
2^20
. - Fixed build with internal unwinding.
- Fixed double-emitting of
IR_NEWREF
when restoring sunk values for side
trace (gh-7937). - Fixed the
IR_HREFK
optimization for huge tables. - Fixed recording of the
__concat
metamethod. - Fixed the embedded bytecode loader.
- Improved error reporting on stack overflow.
- Fixed assertion on the Lua stack overflow for a stitched trace.
- Fixed snapshoting of functions for non-base frames.
- Fixed a crash in the allocator during sysprof profiling (gh-8140).
- No side traces are recorded now after disabling the JIT via
jit.off()
. - Fixed handling of instable boolean types in TDUP load forwarding.
- Fixed a crash during the restoration of the sunk
TNEW
with a huge array
part. - Fixed stack-buffer-overflow for
string.format()
with%g
modifier and
length modifier. - Fixed recording of
setmetatable()
withnil
as the second argument. - Fixed recording of
select()
in case with negative first argument. - Fixed use-def analysis for child upvalues.
- Added the
cc
file type for saving bytecode. - Fixed C file generation in
jit.bcsave
. - Fixed trace error handling during trace stitching.
- Fixed recording of the
__concat
metamethod for vararg or protected frames. - Fixed recording of a side trace returning to a lower frame with a maximum
possible frame size. - Fixed
debug.setmetatable()
andlua_setmetatable()
with enabled
jit.dump()
. - Fixed recording of side traces with a down-recursion.
Lua
- Fixed a memory leak in
error_object:set_prev()
(gh-9694). - Fixed alias detection in the YAML encoder (gh-8350, gh-8310, gh-8321).
- Fixed a regression that caused the
wait_connected = false
option of
net_box.connect
to yield, despite being required to be fully asynchronous
(gh-9489). - Fixed a bug in
net.box
when a connection with asynchronous requests could
get garbage collected (gh-9629). - Fixed an inconsistency between the documented
on_disconnect
trigger behavior
ofnet.box
connections when an error is thrown and the actual behavior
(gh-9717). - Fixed a bug in the
on_disconnect
trigger ofnet.box
connections that
caused Tarantool server to hang indefinitely when an error was thrown from the
trigger (gh-9797). - The
on_schema_reload
trigger behavior ofnet.box
connections when an
error is thrown is now consistent with the behavior of theon_disconnect
trigger (gh-9679). - Fixed a bug when a
net.box
connection remained active after being closed
from the connection'son_connect
trigger (gh-9827).
Config
- Fixed a bug when only one alert of a particular type is reported in
config:info().alerts
instead of several ones. Examples of such alerts are
privilege grant delay due to a lack of a space/function/sequence and skipping
of a non-dynamicbox.cfg()
option applies on the configuration reloading
(gh-9586). - An alert regarding delayed privilege granting is now cleared when the
privilege is granted (gh-9574). - Calling
require('config'):get()
in role code now returns the configuration
that is currently applied (gh-9649). - The config status is now set after the
post_apply
phase (ghe-643). - A non-existent role can now be assigned in the
credential
section of
the configuration (gh-9643). - Privileges that were not granted by the config module are no longer
revoked by the config module (gh-9643). - Fixed a non-verbose error on an empty configuration file.
Now Tarantool can successfully start up with an empty configuration
file using data from other configuration sources (gh-9845). - Added additional validation to a cluster's configuration.
Now it is forbidden to create an empty group or
replicaset (gh-9895). - Added a subject URI to the error that is thrown on configuration
verification (gh-9644). - Added a warning with the skipped (unsuitable) URI to replicaset
and sharding configuration (gh-9644).
Datetime
- Fixed a bug in
strptime
when the assertion was triggered (gh-8525).
Build
- Fixed
package.cpath
for Debian based distros (gh-9580).
Testing
- Bumped
metrics
submodule to commit3370f85
to fix compatibility with
luatest
commitd985997
.
Tools
tarantoolctl
has been removed. Systemd, sysvinit and logrotate scripts
based on it were also removed. All this functionality is covered by thett
utility.tarantoolctl
is no longer available in official deb and rpm
packages. This change will only affect the absence of tarantoolctl in future
releases of tarball archives. (gh-9443).- Added the
--human-readable
option for themisc.memprof
parser to print
sizes like 1KiB, 234MiB, 2GiB, etc.
Made the errors from the profilers more user-friendly (gh-9217).