ChangeLog 1.5 - tsafin/tarantool GitHub Wiki
Version 1.5.3
(bugfix release, released 2014-01-28)
Incompatible changes
The number of log levels is increased by 1. Anyone using a non-default log_level setting in the configuration file should modify their configuration file to preserve the same level of log verbosity.
Bugs fixed (server)
- gh-69 A new severity '!' introduced for system errors. System errors are errors a system administrator shoud pay particular attention to, so a dedicated log level was introduced for them. @kostja
- gh-79 Additional check for memory allocations were implemented in the TREE index. @alyapunov
- gh-136 Call box.dostring('box.cfg.wal_mode') could crash the server @pmwkaa
- gh-171 A few inconsistencies in the RPM specification were fixed. @pmwkaa
Bugs fixed (tools)
- a memory leak in tarantool --cat was fixed @bigbes92
- tarantool --cat now supports DELETE from Tarantool 1.3 @kostja
- tarantar manpage was added @pgulutzan
Version 1.5.2
(bugfix release, released 2013-12-06)
Incompatible changes
- TEE option in the command line client (
tarantool
) is replaced with analogous PAGER option, gh-59, @bigbes92
New and obsolete platforms
Ubuntu "Quantal", "Raring" and "Saucy" were added. Debian "Squeeze" is no longer supported. There is now a spec for building Tarantool "DMG" packages on Mac OS X. SUSE 13.1 support has been added for builds from the source code. Numerous fixes in the RPM spec file.
Functionality added or changed
-
instead of using a pure copy-on-write and
fork()
for snapshot, Tarantool began using tuple versions when saving a snapshot. During a snapshot, the slab allocator is put into "delayed free" mode, in which old tuples are not removed, so that they can be put into the snapshot. Once a snapshot is done, these tuples are garbage collected. This significantly improved the speed offork()
forsave snapshot
and reduced snapshot process memory consumption (patch by odnoklassniki, gh-47, @nevinitsin). -
the previous feature unraveled a bug in OpenVZ which caused Tarantool to crash with segmentation violation under OpenVZ. While the bug in OpenVZ is being fixed, a patch which automatically detects OpenVZ and disables tuple versioning on it was implemented gh-91, @unera
-
replica process title and 'show info' now reflects the state of a replica. When the replica has just started, the field contains
connecting
, once connected, the field saysconnected
, and if connection has failed and the replica is trying to reconnect, the field containsfailed
, @rtsisyk -
a new statement on the administrative console
show index
displays memory used by Tarantool indexes (odnoklassniki contribution, @nevinitsin) -
show slab
now displays the amount of memory wasted by the slab allocator due to internal fragmentation (odnoklassniki contribution, @nevinitsin) -
when saving a snapshot, with
snap_io_rate_limit
set, the server nowfsync()
s the snapshot file once in everysnap_io_rate_limit
bytes. This reduces potentially destructive impact of the file system cache and its parameters on disk utilization, i.e. actually does the jobsnap_io_rate_limit
was designed to do (odnoklassniki contribution, @nevinitsin) -
there is now a local Lua table
box.session.storage
in every connection which is automatically cleaned up by the server when the connection is destroyed, gh-26, @unera -
a new UPDATE operation
multi-delete
can delete multiple fields, @rtsisyk -
when reading the snapshot, the server now responds to signals and can be terminated, @rtsisyk
-
replication spawner process now ignores
SIGUSR1/SIGUSR2
signals, since these signals are used to save a snapshot and should not kill any application in tarantool server process group, @kostja -
Tarantool now tries to give the
logger
option in the configuration file a basic check at the start, and refuses to start if it turns out to be broken. Otherwise, if logger option was set incorrectly, the server could not even complain about it anywhere, since it had no logs, @kostja -
Lua
io
andpackage
libraries were added to the list of libraries disabled in sandbox mode. @kostja -
numerous additions and improvements in the User Guide @pgulutzan
- new Tarantool tutorial
- description of the binary format of the write ahead log
- tarantar, tarancheck, tarantool, tarantool_deploy utilities documented
- basic examples for a few programming languages, PHP, Perl, Python, C
- documentation for Tarantool plugins, in particular MySQL and PostgreSQL connector plugin
- a Lua tutorial
- numerous corrections and improvements throughout the manual
- added a new manual Appendix with server limitations
-
tarantool
command line client now only requires one of the ports (either binary-p
or administrative-a
) and discovers the remaining ports automatically using the specified port gh-90, @bigbes92 -
tarantool
command line client now supportsPAGER
option. For example, you can set pager togrep
to filter server output, gh-59, @bigbes92 -
tarantar
now supportslog_dir
/snap_dir
options in the configuration file @bigbes92 -
tarantar
now can be given a memory limit, work in daemon mode, and create a snapshot up to the given LSN. @pmwkaa -
tarantool
printer for snapshots and xlogs was prettified, added filtering support for LSNs when playing snapshot files gh-102 @bigbes92
Bugs fixed (server)
- gh-33 box.fiber.find() with no arguments crashes server @kostja
- gh-37 print(64-bit number) adds extra newline @kostja
- gh-38 Broken require in lua @rtsisyk
- gh-43 wrong destructor in box.socket @pmwkaa
- gh-44 box.raise() via iproto can crash the server @rtsisyk
- gh-53 Race condition running init.lua @rtsisyk
- gh-54 socket:readline(limit, {sep}, timeout) somehow incorrectly interprets timeout @pmwkaa
- gh-62 Log actual file name and line number when exception is raised @rtsisyk
- gh-65 Space does not exist error on repetitive access to space 0 in Lua @rtsisyk
- gh-72 print() in background fiber hogs fiber garbage collected memory pool @rtsisyk
- gh-76 Segfault with box.net.sql.connect('mysql') on Oracle Linux @unera
- [gh-99] (http://github.com/tarantool/tarantool/issues/99) salloc initialization is not checked at startup, @rtsisyk
- gh-100 Segmentation fault if rows_per_wal = 1 @rtsisyk
- gh-107 box.tuple.unpack asserts on extra arguments @rtsisyk
- gh-112 Tarantool crashes with SIGSEGV during reload configuration @alyapunov
- gh-119 A dead fiber could get reused prematurely @kostja
- gh-122 box.pack('p', t) and box.pack('V', 1, t) segfault on recursive tables @rtsisyk
- gh-123 box.index.count and box.index.iterator do not check arguments @rtsisyk
- gh-131 A hang in box.fiber.resume() if an attached fiber is cancelled @kostja
- lp-1209189 Using box.socket:recvfrom on udp socket causing 100% CPU utilization instead of idle @pmwkaa
- lp-1204040 Fix for bug #1204040: cdata, that returns, may be not only UINT64 or INT64 @pmwkaa
- memory leak in box.ipc.channel @unera
- remote cookie is now saved in wal @alyapunov