Tarantool 1.10
Release: v. 1.10.0
Версия 1.10.4
Тип версии: стабильная (lts). Дата выхода: 2019-09-26. Тег: 1-10-4.
Release: v. 1.10.4.
Общие сведения
1.10.4 представляет собой очередную стабильную (lts) версию в серии 1.10. Пометка «стабильная» означает, что некоторые системы в течение определенного времени успешно отработали в производственной среде без известных сбоев, ненадежных результатов и прочих неисправностей.
Данная версия содержит около 50 исправлений по сравнению с версией 1.10.3.
Совместимость
Tarantool 1.10.x обратно совместим с Tarantool 1.9.x в том, что касается структуры бинарных данных, клиент-серверного протокола и протокола репликации. Чтобы воспользоваться новыми функциями серии 1.10.x, обновите версию 1.9 с помощью процедуры box.schema.upgrade()
.
Изменения или добавления функциональности
- (Engines) Improve dump start/stop logging. When initiating memory dump, print
how much memory is going to be dumped, expected dump rate, ETA, and the recent write rate. Upon dump completion, print observed dump rate in addition to dump size and duration.
- (Engines) Look up key in reader thread. If a key isn’t found in the tuple cache,
we fetch it from a run file. In this case disk read and page decompression is done by a reader thread, however key lookup in the fetched page is still performed by the TX thread. Since pages are immutable, this could as well be done by the reader thread, which would allow us to save some precious CPU cycles for TX (gh-4257).
- (Core) Improve box.stat.net
(gh-4150).
- (Core) Add
idle
to downstream status inbox.info
. When a relay sends a row it updates
last_row_time
value with the current time. Whenbox.info()
is called,idle
is set tocurrent_time
-last_row_time
.
- (Core) Add
- (Replication) Print corrupted rows on decoding error.
Improve row printing to log. Print the header row by row, 16 bytes in a row, and format output to match
xxd
output:[001] 2019-04-05 18:22:46.679 [11859] iproto V> Got a corrupted row: [001] 2019-04-05 18:22:46.679 [11859] iproto V> 00000000: A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53 60 5F 20 3F [001] 2019-04-05 18:22:46.679 [11859] iproto V> 00000010: D8 E2 D6 E2 A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53
- (Lua) Add type of operation to space trigger parameters.
For example, a trigger function may now look like this:
function before_replace_trig(old, new, space_name, op_type) if op_type == 'INSERT' then return old else return new end end
(gh-4099).
- (Lua) Add
debug.sourcefile()
anddebug.sourcedir()
helpers (and
debug.__file__
anddebug.__dir__ shortcuts
) to determine the location of a current Lua source file. Part of (gh-4193).
- (Lua) Add
- (HTTP client) Add
max_total_connections
option in addition to max_connections
to allow more fine-grained tuning oflibcurl
connection cache. Don’t restrict the total connections` with a constant value by default, but uselibcurl
’s default, which scales the threshold according to easy handles count (gh-3945).
- (HTTP client) Add
Исправленные ошибки
- (Vinyl) Fix assertion failure in
vy_tx_handle_deferred_delete
- (gh-4294).
- (Vinyl) Fix assertion failure in
- (Vinyl) Don’t purge deleted runs from vylog on compaction. Cherry-picked from (gh-4218).
- (Vinyl) Don’t throttle DDL
- (gh-4238).
- (Vinyl) Fix deferred DELETE statement lost on commit
- (gh-4248).
- (Vinyl) Fix assertion while recovering dumped statement
- (gh-4222).
- (Vinyl) Reset dump watermark after updating memory limit
- (gh-3864).
- (Vinyl) Be pessimistic about write rate when setting dump watermark
- (gh-4166).
- (Vinyl) Fix crash if space is dropped while space.get is reading from it
- (gh-4109).
- (Vinyl) Fix crash during index build
- (gh-4152).
- (Vinyl) Don’t compress L1 runs
- (gh-2389).
- (Vinyl) Считать операторы, пропущенные при чтении.
- (Vinyl) Принять во внимание поиск первичного ключа при учете задержек.
- (Vinyl) Исправить зависание
vy_range_update_compaction_priority
. - (Vinyl) Освобождать область при фиксации vylog вместо сброса и очищать после выделения заместителя оператора.
- (Vinyl) Еще увеличить ограничение на количество открытых файлов в файле
systemd
. - (Vinyl) Увеличить минимальный размер диапазона до 128 Мбайт
- (Memtx) Cancel checkpoint thread at exit
- (gh-4170).
- (Core) Fix crash for update with empty tuple
- (gh-4041).
- (Core) Fix use-after-free in
space_truncate
- (gh-4093).
- (Core) Fix use-after-free in
- (Core) Fix error while altering index with sequence
- (gh-4214).
- (Core) Detect a new invalid json path case
- (gh-4419).
- (Core) Fix empty password authentication
- (gh-4327).
- (Ядро) Исправить размер массива
txn::sub_stmt_begin
. - (Ядро) Учитывать
index.pairs
вbox.stat.SELECT()
. - (Replication) Disallow bootstrap of read-only masters
- (gh-4321).
- (Replication) Enter orphan mode on manual replication configuration change
- (gh-4424).
- (Репликация) Задать значение
now
дляlast_row_time
вrelay_new
иrelay_start
. Проблема 4431. - (Replication) Stop relay on subscribe error
- (gh-4399).
- (Replication) Init
coio
watcher before join/subscribe - (gh-4110).
- (Replication) Init
- (Replication) Allow to change instance id during join
- (gh-4107).
- (Репликация) Исправить логику сборки мусора.
- (Репликация) Вернуть проверку границ пакета для iproto.
- (Репликация) Не прерывать репликацию при ER_UNKNOWN_REPLICA.
- (Репликация) Уменьшить воздействие фрагментации буфера ввода при большом
cfg.readahead
. - (Репликация) Исправить обновление с 1.7 (не распознает тип запроса IPROTO_VOTE).
- (Replication) Fix memory leak in call / eval in the case when a transaction
- is not committed (gh-4388).
- (Lua) Fix
fio.mktree()
error reporting - (gh-4044).
- (Lua) Fix
- (Lua) Fix segfault on
ffi.C_say()
without filename - (gh-4336).
- (Lua) Fix segfault on
- (Lua) Fix segfault on
json.encode()
on a recursive table - (gh-4366).
- (Lua) Fix segfault on
- (Lua) Fix a segfault during initialization of a cipher from
crypto
module - (gh-4223).
- (Lua) Fix a segfault during initialization of a cipher from
- (HTTP client) Reduce stack consumption during waiting for a DNS resolving result
- (gh-4179).
- (HTTP client) Increase max outgoing header size to 8 KiB
- (gh-3959).
- (HTTP client) This closes several known problems that were fixed in recent
libcurl
versions, including segfaults, hangs, memory leaks and performance problems.
- (LuaJIT) Fix overflow of snapshot map offset
- Part of (gh-4171).
- (LuaJIT) Fix rechaining of pseudo-resurrected string keys
- Part of (gh-4171).
- (LuaJIT) Fix fold machinery misbehaves
- (gh-4376).
- (LuaJIT) Fix for
debug.getinfo(1,'>S')
- (gh-3833).
- (LuaJIT) Fix for
- (LuaJIT) Fix
string.find
recording - (gh-4476).
- (LuaJIT) Fix
- (LuaJIT) Исправлена ошибка нетонущих 64-битных указателей.
- (Разное) Еще увеличить предел количества открытых файлов в файле
systemd
. - (Misc) Raise error in
tarantoolctl
whenbox.cfg()
isn’t called - (gh-3953).
- (Misc) Raise error in
- (Misc) Support
systemd
’s NOTIFY_SOCKET on OS X - (gh-4436).
- (Misc) Support
- (Misc) Fix
coio_getaddrinfo()
when 0 timeout is passed - (affects
netbox
’sconnect_timeout
) (gh-4209).
- (Misc) Fix
- (Misc) Fix
coio_do_copyfile()
to perform truncate of destination - (affects
fio.copyfile()
) (gh-4181).
- (Misc) Fix
- (Разное) Сделать подсказки в
coio_getaddrinfo()
необязательными. - (Misc) Validate
msgpack.decode()
cdata size argument - (gh-4224).
- (Misc) Validate
- (Misc) Fix linking with static
openssl
library - (gh-4437).
- (Misc) Fix linking with static
Устаревшие функции
- (Core) Deprecate
rows_per_wal
in favor ofwal_max_size
. - Part of (gh-3762).
- (Core) Deprecate
Версия 1.10.3
Тип версии: стабильная (lts). Дата выхода: 2019-04-01. Тег: 1-10-3.
Release: v. 1.10.3.
Общие сведения
1.10.3 представляет собой очередную стабильную (lts) версию в серии 1.10. Пометка «стабильная» означает, что некоторые системы в течение определенного времени успешно отработали в производственной среде без известных сбоев, ненадежных результатов и прочих неисправностей.
Данная версия содержит 69 исправлений по сравнению с версией 1.10.2.
Совместимость
Tarantool 1.10.x обратно совместим с Tarantool 1.9.x в том, что касается структуры бинарных данных, клиент-серверного протокола и протокола репликации. Чтобы воспользоваться новыми функциями серии 1.10.x, обновите версию 1.9 с помощью процедуры box.schema.upgrade()
.
Изменения или добавления функциональности
- (Engines) Randomize vinyl index compaction
- (gh-3944).
- (Engines) Throttle tx thread if compaction doesn’t keep up with dumps
- (gh-3721).
- (Engines) Do not apply run_count_per_level to the last level
- (gh-3657).
- (Server) Report the number of active iproto connections
- (gh-3905).
- (Replication) Never keep a dead replica around if running out of disk space
- (gh-3397).
- (Replication) Report join progress to the replica log
- (gh-3165).
- (Lua) Expose snapshot status in box.info.gc()
- (gh-3935).
- (Lua) Show names of Lua functions in backtraces in fiber.info()
- (gh-3538).
- (Lua) Check if transaction opened
- (gh-3518).
Исправленные ошибки
- (Engines) Tarantool crashes if DML races with DDL
- (gh-3420).
- (Engines) Recovery error if DDL is aborted
- (gh-4066).
- (Engines) Tarantool could commit in the read-only mode
- (gh-4016).
- (Engines) Vinyl iterator crashes if used throughout DDL
- (gh-4000).
- (Engines) Vinyl doesn’t exit until dump/compaction is complete
- (gh-3949).
- (Engines) After re-creating secondary index no data is visible
- (gh-3903).
- (Engines) box.info.memory().tx underflow
- (gh-3897).
- (Engines) Vinyl stalls on intensive random insertion
- (gh-3603).
- (Server) Newer version of libcurl explodes fiber stack
- (gh-3569).
- (Server) SIGHUP crashes tarantool
- (gh-4063).
- (Server) checkpoint_daemon.lua:49: bad argument #2 to „format“
- (gh-4030).
- (Server) fiber:name() show only part of name
- (gh-4011).
- (Server) Second hot standby switch may fail
- (gh-3967).
- (Server) Updating box.cfg.readahead doesn’t affect existing connections
- (gh-3958).
- (Server) fiber.join() blocks in „suspended“ if fiber has cancelled
- (gh-3948).
- (Server) Tarantool can be crashed by sending gibberish to a binary socket
- (gh-3900).
- (Server) Stored procedure to produce push-messages never breaks on client disconnect
- (gh-3559).
- (Server) Tarantool crashed in lj_vm_return
- (gh-3840).
- (Server) Fiber executing box.cfg() may process messages from iproto
- (gh-3779).
- (Server) Possible regression on nosqlbench
- (gh-3747).
- (Server) Assertion after improper index creation
- (gh-3744).
- (Server) Tarantool crashes on vshard startup (lj_gc_step)
- (gh-3725).
- (Server) Do not restart replication on box.cfg if the configuration didn’t change
- (gh-3711).
- (Replication) Applier times out too fast when reading large tuples
- (gh-4042).
- (Replication) Vinyl replica join fails
- (gh-3968).
- (Replication) Error during replication
- (gh-3910).
- (Replication) Downstream status doesn’t show up in replication.info unless the channel is broken
- (gh-3904).
- (Replication) replication fails: tx checksum mismatch
- (gh-3883).
- (Replication) Rebootstrap crashes if master has replica’s rows
- (gh-3740).
- (Replication) After restart tuples revert back to their old state which was before replica sync
- (gh-3722).
- (Replication) Add vclock for safer hot standby switch
- (gh-3002).
- (Replication) Master row is skipped forever in case of wal write failure
- (gh-2283).
- (Lua) space:frommap():tomap() conversion fail
- (gh-4045).
- (Lua) Non-informative message when trying to read a negative count of bytes from socket
- (gh-3979).
- (Lua) space:frommap raise «tuple field does not match…» even for nullable field
- (gh-3883).
- (Lua) Tarantool crashes on net.box.call after some uptime with vshard internal fiber
- (gh-3751).
- (Lua) Heap use after free in lbox_error
- (gh-1955).
- (Misc) http.client doesn’t honour „connection: keep-alive“
- (gh-3955).
- (Misc) net.box wait_connected is broken
- (gh-3856).
- (Misc) Mac build fails on Mojave
- (gh-3797).
- (Misc) FreeBSD build error: no SSL support
- (gh-3750).
- (Misc) „http.client“ sets invalid (?) reason
- (gh-3681).
- (Misc) Http client silently modifies headers when value is not a «string» or a «number»
- (gh-3679).
- (Misc) yaml.encode uses multiline format for „false“ and „true“
- (gh-3662).
- (Misc) yaml.encode encodes „null“ incorrectly
- (gh-3583).
- (Misc) Error object message is empty
- (gh-3604).
- (Misc) Log can be flooded by warning messages
- (gh-2218).
Устаревшие функции
- Опция
console=true
для net.box.new() объявлена устаревшей.
Версия 1.10.2
Тип версии: стабильная (lts). Дата выхода: 2018-10-13. Тег: 1-10-2.
Release: v. 1.10.2.
Данная сборка представляет собой первую стабильную (lts) версию в серии 1.10. Кроме того, Tarantool 1.10.2 представляет собой мажорную версию, версия Tarantool 1.9.2 объявлена устаревшей. Это обновление содержит 95 исправлений по сравнению с версией 1.9.2.
Tarantool 1.10.x обратно совместим с Tarantool 1.9.x в том, что касается структуры бинарных данных, клиент-серверного протокола и протокола репликации. Обновление можно произвести с помощью процедуры box.schema.upgrade()
.
Цель данного релиза – значительно повысить стабильность vinyl'а
и реализовать автоматическую повторную настройку набора реплик в Tarantool.
Изменения или добавления функциональности:
- (Engines) support ALTER for non-empty vinyl spaces (gh-1653).
- (Engines) tuples stored in the vinyl cache are not shared among the indexes of the same space (gh-3478).
- (Engines) keep a stack of UPSERTS in
vy_read_iterator
(gh-1833).- (Engines)
box.ctl.reset_stat()
, a function to reset vinyl statistics (gh-3198).- (Server) configurable syslog destination (gh-3487).
- (Server) allow different nullability in indexes and format (gh-3430).
- (Server) allow to back up any checkpoint, not just the last one (gh-3410).
- (Server) a way to detect that a Tarantool process was started / restarted by
tarantoolctl
(TARANTOOLCTL and TARANTOOL_RESTARTED env vars) (gh-3384, gh-3215).- (Server) net_msg_max configuration parameter to restrict the number of allocated fibers (gh-3320).
- (Replication) display the connection status if the downstream gets disconnected from the upstream (box.info.replication.downstream.status
= disconnected
) (gh-3365).- (Replication) replica-local spaces (gh-3443)
- (Replication) replication_skip_conflict, a new option in
box.cfg{}
to skip conflicting rows in replication (gh-3270)- (Replication) remove old snapshots which are not needed by replicas (gh-3444)
- (Replication) log records which tried to commit twice (gh-3105)
- (Lua) new function fiber.join() (gh-1397).
- (Lua) new option
names_only
to tuple:tomap() (gh-3280).- (Lua) support custom rock servers (
server
andonly-server
options for tarantoolctl rocks command) (gh-2640).- (Lua) expose
on_commit
/on_rollback
triggers to Lua (gh-857).- (Lua) new function box.is_in_txn() to check if a transaction is open (gh-3518).
- (Lua) tuple field access via a json path (by number, name, and path); (gh-1285).
- (Lua) new function space:frommap() (gh-3282).
- (Lua) new module utf8 that implements libicu’s bindings for use in Lua (gh-3290, gh-3385).