Date: 2017-05-11
Tag: 1.7.4
.
1.7.3 is a release candidate in the 1.7 series. It is backward compatible with 1.6 in binary data layout, client-server protocol and replication protocol.
- UPSERT by secondary keys was banned to avoid unclear semantics. #2226
- require('log').logger_pid() was renamed to require('log').pid(). #2917
- A default value for memtx_memory (slab_alloc_arena) was reduced from 1GB to 256MB. #2042
- box.cfg() options were changed to harmonize with Vinyl:
snap_dir
=>memtx_dir
slab_alloc_arena
=>memtx_memory
, changed to bytesslab_alloc_minimal
=>memtx_min_tuple_size
slab_alloc_maximal
=>memtx_max_tuple_size
slab_alloc_factor
=> deprecated, is not actual in 1.7.xsnapshot_count
=>checkpoint_count
snapshot_period
=>checkpoint_interval
rows_per_wal
=>wal_max_size
logger
=>log
logger_nonblock
=>log_nonblock
logger_level
=>log_level
replication_source
=>replication
panic_on_snap_error = true
andpanic_on_wal_error = true
=>force_recovery = false
See the full list of incompatible changes since 1.6.9 in 1.7.1 and 1.7.2, 1.7.2 and 1.7.2 release notes.
-
Substantial progress on stabilizing the Vinyl storage engine:
- Fix most known crashes and bugs with bad results.
- Switch to use XLOG/SNAP format for all data files.
- Enable ZStandard compression for all data files.
- Squash UPSERT operations on the fly and merge hot keys using a background fiber.
- Significantly improve the performance of
index:pairs()
andindex:count()
. - Remove unnecessary conflicts from transactions.
- In-memory level was mostly replaced by memtx data structures.
- Specialized allocators are used in most places.
We're still actively working on Vinyl and plan to add multi-level compaction and improve the performance of secondary keys in 1.7.4. This implies a data format change which we plan to implement before 1.7 becomes generally available.
-
Support for DML requests for
space:on_replace()
triggers #587. -
UPSERT can be used with the empty list of operations #1854.
-
Lua functions to manipulate environment variables. #1718.
-
Lua library to read Tarantool snapshots and xlogs #1782.
-
New
play
andcat
commands intarantoolctl
#1861. -
Improve support for the large number of active network clients. #1892.
-
Support for
space:pairs(key, iterator-type)
syntax #1875. -
Automatic cluster bootstrap now also works without authorization #1589
-
Replication retries to connect to master indefinitely #1511
-
Temporary spaces now work with
box.cfg { read_only = true }
#1378. -
The maximum length of space names increased to 64 bytes (was 32) #2008.
- Dozens of bugfixes for Vinyl engine, see [GitHub Issues](https://github.com/tarantool/tarantool/issues?q=milestone%3A1.7.3 label%3Avinyl) for details
- Invalid handling of map16 format in
mp_check()
CVE-2016-9036 #1991. - Out of bounds access in
xrow_header_decode()
CVE-2016-9037 #1992. - Fix calculation of periods in snapshot daemon. #1912.
index:count()
returns wrong results for BITSET index 1896.- Tarantool fails to parse xlog metadata if it contains too large vclock #1940.
- Crash on invalid
box.cfg { replication_source = "" }
configuration #1962. - Use after free in box.error() #1955.
- A dead net.box connection is not closed on the :close() call #1904.
- Crash after failed fsync() in WAL #1902.
- Proper propagation of I/O errors in box.snapshot() #1858.
- Segfault if using
net.box
beforebox.cfg
start #1814. - Wrong
schema_id
in server responses #1808. - Crash in tarantoolctl connect on TAB key #1802.
- SIGSEGV in
fd_reify
on armv7 #1799. - JOIN/SUBSCRIBE must fail if master has
wal_mode = "none"
#1233. - Could NOT find OpenSSL on macOS #1852.
A full list of fixed bugs is available on GitHub.