Top.Mail.Ru
Tarantool 1.10.5 | Tarantool
 

Tarantool 1.10.5

Tarantool 1.10.5

Date: 2020-01-14 Tag: 1.10.5-0-g83a2ae9

1.10.5 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 30 issues since 1.10.4. 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.

  • Exit gracefully when a main script throws an error: notify systemd, log the error. gh-4382
  • Enable __pairs and __ipairs metamethods from Lua 5.2. gh-4560 We still conform Lua 5.1 API that is not always compatible with Lua 5.2. The change is only about those metamethods.

  • Add package builds and deployment for the following Linux distros:
  • Ubuntu 19.10 Eoan Ermine, gh-4583
  • CentOS 8, gh-4543
  • Fedora 31, gh-4612

  • fiber: make sure the guard page is created; refuse to create a new fiber otherwise. gh-4541. It is possible in case of heavy memory usage, say, when there is no resources to split VMAs.
  • Forbid 00000000-0000-0000-0000-000000000000 as the value of box.cfg({<...>}) options: replicaset_uuid and instance_uuid. gh-4282 It did not work as expected: the nil UUID was treated as absence of the value.
  • Update cache of universe privileges without reconnect. gh-2763
  • net.box: don’t fire the on_connect trigger on schema update. gh-4593 Also don’t fire the on_disconnect trigger if a connection never entered into the active state (e.g. when the first schema fetch is failed).
  • func: fix use-after-free on function unload. fce9cf96
  • Don’t destroy a session until box.session.on_disconnect(<...>) triggers are finished. gh-4627 This means, for example, that box.session.id() can be safely invoked from the on_disconnect trigger. Before this change box.session.id() returned garbage (usually 0) after yield in the on_disconnect trigger. Note: tarantool/queue module is affected by this problem in some scenarios. It is especially suggested to update Tarantool at least to this release if you’re using this module.
  • Handle OOM gracefully during allocating a buffer for binary protocol response. 5c5a4e2d
  • func: Fix box.schema.func.drop(<..>) to unload unused modules. gh-4648. Also fix box.schema.func.create(<..>) to avoid loading a module again when another function from the module is loaded.
  • Encode Lua number -2^63 as integer in msgpack.encode() and box’s functions. gh-4672

  • Prefer to bootstrap a replica from a fully bootstrapped instance rather than from an instance that is in the process of bootstrapping. gh-4527.

    This change enables the case when two nodes (B, C) are being bootstrapped simultaneously using the one that is already bootstrapped (A), while A is configured to replicate from {B, C} and B – from {A, C}.

  • Return immediately from box.cfg{<...>} when an instance is reconfigured with replication_connect_quorum = 0. gh-3760

    This change also fixes the behaviour of reconfiguration with non-zero replication_connect_quorum: box.cfg{<...>} returns immediately regardless of whether connections to upstreams are established.

  • Auto reconnect a replica if password is invalid. gh-4550

  • Use empty password when a URI in box.cfg{replication = <...>} is like login@host:port. gh-4605.

    This behaviour matches the net.box’s one now. Explicit login:@host:port was necessary before, otherwise a replica displayed the following error:

    Missing mandatory field „tuple“ in request

  • Fix segfault during replication configuration (box.cfg{replication = <...>} call). gh-4440, gh-4576, gh-4586, gh-4643

  • Apply replication settings of box.cfg({<...>}) in the strict order. gh-4433

  • Fix handling of a socket read error in the console client (console.connect(<URI>) or tarantoolctl connect/enter <...>). 1f86e6cc

  • Handle the “not enough memory” error gracefully when it is raised from lua_newthread(). gh-4556 There are several cases when a new Lua thread is created:

    • Start executing a Lua function call or an eval request (from a binary protocol, SQL or with box.func.<...>:call()).
    • Create of a new fiber.
    • Start execution of a trigger.
    • Start of encoding into a YAML format (yaml.encode()).
  • Fix stack-use-after-scope in json.decode(). gh-4637

  • Allow to use cdata<struct ibuf *> (e.g. buffer.IBUF_SHARED) as the argument to msgpack.encode(). 6d38f0c5 Before this change the cdata<struct ibuf> type was allowed, but not the corresponding pointer type.

  • A pointer returned by msgpack.decode*(cdata<[char] const *>) functions can be assigned to buffer.rpos now (and the same for msgpackffi), gh-3926.

    All those functions now return cdata<char *> or cdata<const char *> depending of a passed argument. Example of the code that did not work: res, buf.rpos = msgpack.decode(buf.rpos, buf:size()).

  • Fix race in fio.mktree() when two tarantool processes create the same directory tree simultaneously. gh-4660 This problem affects tarantool/cartrige, see cartrige#gh-382.

  • Disable verbose mode when {verbose = false} is passed. 28f8a5eb
  • Fix assertion fail after a curl write error. gh-4232

  • Fix the “Data segment size exceeds process limit” error on FreeBSD/x64: do not change resource limits when it is not necessary. gh-4537

  • fold: keep type of emitted CONV in sync with its mode. LuaJIT#524 This fixes the following assertion fail:

    asm_conv: Assertion `((IRType)((ir->t).irt & IRT_TYPE)) != st’ failed

  • Fix CLI boolean options handling in tarantoolctl cat <...>, such as --show-system. gh-4076
  • Fix segfault (out of bounds access) when a stack unwinding error occurs at backtrace printing. gh-4636 Backtrace is printed on SIGFPE and SIGSEGV signals or when LuaJIT finds itself in the unrecoverable state (lua_atpanic()).
  • Clear terminal state on panic. gh-4466

  • Fix OpenSSL linking problems on FreeBSD. gh-4490
  • Fix linking problems on Mac OS when several toolchains are in PATH. gh-4587
  • Fix GCC 9 warning on strncpy(). gh-4515