Tarantool 1.10.6
Release: v. 1.10.6
Date: 2020-04-20 Tag: 1.10.6-1-g47c009a
1.10.6 is the next stable release of the 1.10.x series. The label “stable” means there are 1.10.x-based applications running in production for quite a while without known crashes, incorrect results or other showstopper bugs.
This release resolves roughly 20 issues since 1.10.5. There may be bugs in less common areas. If you find any, feel free to report an issue at GitHub.
Tarantool 1.10.x is backward compatible with Tarantool 1.9.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 1.10.x series.
fiber.storage
is cleaned between requests, and can be used as a request-local storage. Previouslyfiber.storage
could contain some old values in the beginning of an iproto request execution, and it needed to be nullified manually. Now the cleanup is unneeded (gh-4662).tuple
/space
/index
:update()
/upsert()
were fixed not to turn a value into an infinity when a float value was added to or subtracted from a float column and exceeded the float value range (gh-4701).- Make RTREE indexes handle the out of memory error: before this fix, OOM during the recovery of an RTREE index resulted in segmentation fault (gh-4619).
- Add cancellation guard to avoid WAL thread stuck (gh-4127).
- Fix the rebootstrap procedure not working if the replica itself is
listed in
box.cfg.replication
(gh-4759). - Fix possible user password leaking via replication logs (gh-4493).
- Local space operations are now counted in 0th vclock component. Every instance may have its own 0-th vclock component not matching others’. Local space operations are not replicated at all, even as NOPs (gh-4114).
- Gc consumers are now ordered by their vclocks and not by vclock signatures. Only the WALS that contain no entries needed by any of the consumers are deleted (gh-4114).
- json:
:decode()
doesn’t spoil instance’s options with per-call ones (when it is called with the second argument) (gh-4761). os.environ()
is now changed whenos.setenv()
is called (gh-4733).netbox.self:call/eval()
now returns the same types asnetbox_connection:call
/eval
. Previously it could return a tuple orbox.error
cdata (gh-4513).- libev: backport fix for listening for more then 1024 file descriptors on Mac OS (gh-3867).
- When building Tarantool with bundled
libcurl
, link it with thec-ares
library by default (gh-4591).
__pairs
/__ipairs
metamethods handling is removed since we faced the issues with the backward compatibility between Lua 5.1 and Lua 5.2 within Tarantool modules as well as other third party code (gh-4770).- Introduce
luajit-gdb.py
extension with commands for inspecting LuaJIT internals. The extension obliges one to provide gdbinfo forlibluajit
, otherwise loading fails. The extension provides the following commands:lj-arch
dumps values of LJ_64 and LJ_GC64 macro definitionslj-tv
dumps the type and GCobj info related to the given TValuelj-str
dumps the contents of the given GCstrlj-tab
dumps the contents of the given GCtablj-stack
dumps Lua stack of the given lua_Statelj-state
shows current VM, GC and JIT stateslj-gc
shows current GC stats
- Fix string to number conversion: current implementation respects the buffer length (gh-4773).
- “FFI sandwich”(*) detection is introduced. If sandwich is detected
- while trace recording the recording is aborted. The sandwich detected while mcode execution leads to the platform panic.
- luaJIT_setmode call is prohibited while mcode execution and leads to the platform panic.
(*) The following stack mix is called FFI sandwich:
Lua-FFI -> C routine -> Lua-C API -> Lua VM
This sort of re-entrancy is explicitly not supported by LuaJIT compiler. For more info see (gh-4427).
- Fix assertion fault due to triggered dump process during secondary index build (gh-4810).
- Fix static build (
-DBUILD_STATIC=ON
) whenlibunwind
depends onliblzma
(gh-4551).