Skip to content

3.0.2

Compare
Choose a tag to compare
@sergos sergos released this 16 Apr 21:14
· 274 commits to master since this release

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() with nil 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() and lua_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
    of net.box connections when an error is thrown and the actual behavior
    (gh-9717).
  • Fixed a bug in the on_disconnect trigger of net.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 of net.box connections when an
    error is thrown is now consistent with the behavior of the on_disconnect
    trigger (gh-9679).
  • Fixed a bug when a net.box connection remained active after being closed
    from the connection's on_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-dynamic box.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 commit 3370f85 to fix compatibility with
    luatest commit d985997.

Tools

  • tarantoolctl has been removed. Systemd, sysvinit and logrotate scripts
    based on it were also removed. All this functionality is covered by the tt
    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 the misc.memprof parser to print
    sizes like 1KiB, 234MiB, 2GiB, etc.
    Made the errors from the profilers more user-friendly (gh-9217).