Skip to content

Instantly share code, notes, and snippets.

@rtsisyk
Last active May 11, 2017 09:59
Show Gist options
  • Save rtsisyk/a5d807c25afb90ae01564f041237550e to your computer and use it in GitHub Desktop.
Save rtsisyk/a5d807c25afb90ae01564f041237550e to your computer and use it in GitHub Desktop.
tarantool-1.7.4 changelog

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.

Incompatible changes

  • 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 bytes
    • slab_alloc_minimal => memtx_min_tuple_size
    • slab_alloc_maximal => memtx_max_tuple_size
    • slab_alloc_factor => deprecated, is not actual in 1.7.x
    • snapshot_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 and panic_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.

Functionality added or changed

  • 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() and index: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 and cat commands in tarantoolctl #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.

Bugs fixed

  • 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 before box.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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment