Top.Mail.Ru
Tarantool 1.10 | Tarantool
 

Tarantool 1.10

Tarantool 1.10

Версия 1.10.4

Тип версии: стабильная (lts). Дата выхода: 2019-09-26. Тег: 1-10-4.

Сообщение: https://github.com/tarantool/tarantool/releases/tag/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().

Изменения или добавления функциональности

  • (Движки) Улучшена запись в журнал о событиях начала/окончания процесса создания дампа. При запуске создания дампа записывается объем памяти, для которого создается дамп, предполагаемая скорость создания дампа, ETA, а также последняя скорость записи. По окончании создания дампа записывается зарегистрированная скорость создания дампа, а также размер дампа и длительность.

  • (Движки) Поиск ключа в потоке чтения. Если ключ не обнаружен в кэше кортежа, забираем его из файла забега. В этом случае чтение с диска и распаковка страницы выполняется потоком чтения, однако поиск ключа на выбранной странице все еще выполняется потоком TX. Поскольку страницы являются неизменяемыми, это может сделать поток чтения, что позволит нам сэкономить ценные циклы ЦП для TX. Проблема 4257.

  • (Ядро) Улучшена работа box.stat.net. Проблема 4150.

  • (Ядро) Добавлен статус idle (простаивание) для downstream в box.info. Когда передается строка, обновляется значение last_row_time с текущим временем. Когда идет вызов box.info(), значение idle задается как current_time (текущее время) - last_row_time (время передачи последней строки).

  • (Репликация) Вывод поврежденных данных при ошибке декодирования. Улучшена запись строк в журнал. Вывод заголовка построчно, 16 байтов в строке, формат вывода соответствует выводу xxd:

    [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) Добавлен тип операций в параметры триггера. Например, теперь функция с триггером может выглядеть следующим образом:

    function before_replace_trig(old, new, space_name, op_type)
        if op_type == 'INSERT' then
            return old
        else
            return new
        end
    end
    

    Проблема 4099.

  • (Lua) Добавлены debug.sourcefile() и debug.sourcedir() (а также ускоренные методы debug.__file__ и debug.__dir__) для обнаружения местонахождения текущего исходного файла на Lua. Часть проблемы 4193.

  • (HTTP-клиент) Добавлена опция max_total_connections в дополнение к max_connections, что позволяет более тонко настраивать кэш соединения libcurl. Общее число соединений больше не ограничено постоянным значением по умолчанию, а используется значение по умолчанию из``libcurl``, что масштабирует предел в зависимости от количества обработчиков. Проблема 3945.

Исправленные ошибки

  • (Vinyl) Исправлен отказ в vy_tx_handle_deferred_delete. Проблема 4294.
  • (Vinyl) Не очищать удаленные забеги из vylog при слиянии. Отдельные элементы из проблемы 4218.
  • (Vinyl) Не управлять загрузкой DDL. Проблема 4238.
  • (Vinyl) Исправить потерю при коммите отложенных предложений DELETE. Проблема 4248.
  • (Vinyl) Исправить допустимость неопределенного значения при восстановлении предложения из дампа. Проблема 4222.
  • (Vinyl) Сбросить уровень дампа после обновления предела загрузки памяти. Проблема 3864.
  • (Vinyl) Применять пессимистический прогноз скорости записи при установленном уровне дампа. Проблема 4166.
  • (Vinyl) Исправить сбой при удалении спейса во время чтения из него через space.get. Проблема 4109.
  • (Vinyl) Исправить сбой во время создания индекса. Проблема 4152.
  • (Vinyl) Не сжимать забеги L1. Проблема 2389.
  • (Vinyl) Считать операторы, пропущенные при чтении.
  • (Vinyl) Принять во внимание поиск первичного ключа при учете задержек.
  • (Vinyl) Исправить зависание vy_range_update_compaction_priority.
  • (Vinyl) Освобождать область при фиксации vylog вместо сброса и очищать после выделения заместителя оператора.
  • (Vinyl) Еще увеличить ограничение на количество открытых файлов в файле systemd.
  • (Vinyl) Увеличить минимальный размер диапазона до 128 Мбайт
  • (Memtx) Отменить поток создания контрольных точек на выходе. Проблема 4170.
  • (Ядро) Исправить отказ для обновления с пустым кортежем. Проблема 4041.
  • (Ядро) Исправить использование освобожденной памяти в space_truncate. Проблема 4093.
  • (Ядро) Исправить ошибку при изменении индекса с последовательностью. Проблема 4214.
  • (Ядро) Выявить новый случай неправильного json-пути. Проблема 4419.
  • (Ядро) Исправить аутентификацию с пустым паролем. Проблема 4327.
  • (Ядро) Исправить размер массива txn::sub_stmt_begin.
  • (Ядро) Учитывать index.pairs в box.stat.SELECT().
  • (Репликация) Запретить настройку мастеров только для чтения. Проблема 4321.
  • (Репликация) Входить в режим одиночного сервера при ручном изменении настройки репликации. Проблема 4424.
  • (Репликация) Задать значение now для last_row_time в relay_new и relay_start. Проблема 4431.
  • (Репликация) Остановить передачу данных при ошибке подписки. Проблема 4399.
  • (Репликация) Запустить средство отслеживания coio перед join/subscribe. Проблема 4110.
  • (Репликация) Разрешить изменение идентификатора экземпляра во время присоединения. Проблема 4107.
  • (Репликация) Исправить логику сборки мусора.
  • (Репликация) Вернуть проверку границ пакета для iproto.
  • (Репликация) Не прерывать репликацию при ER_UNKNOWN_REPLICA.
  • (Репликация) Уменьшить воздействие фрагментации буфера ввода при большом cfg.readahead.
  • (Репликация) Исправить обновление с 1.7 (не распознает тип запроса IPROTO_VOTE).
  • (Репликация) Исправить утечку памяти в call / eval в случае отсутствия коммита транзакции. Проблема 4388.
  • (Lua) Исправить регистрацию ошибок fio.mktree(). Проблема 4044.
  • (Lua) Исправить ошибку сегментации в ffi.C_say() без имени файла. Проблема 4336.
  • (Lua) Исправить ошибку сегментации в json.encode() на рекурсивную таблицу. Проблема 4366.
  • (Lua) Исправить зависание pwd.getpwall() и pwd.getgrall() на CentOS 6 и FreeBSD 12. Проблемы 4447, 4428.
  • (Lua) Исправить ошибку сегментации во время инициализации cipher from crypto module. Проблема 4223.
  • (HTTP-клиент) Уменьшить потребление стека во время ожидания результата определения DNS. Проблема 4179.
  • (HTTP-клиент) Увеличить максимальный размер заголовка до 8 КиБ. Проблема 3959.
  • (HTTP-клиент) Сильнее проверять опцию «headers». Проблемы 4281, 3679.
  • (HTTP-клиент) Использовать libcurl в комплекте, а не системный по умолчанию. Проблемы 4318, 4180, 4288, 4389, 4397.
  • (HTTP-клиент) Закрывает несколько известных проблем, которые были исправлены в последних версиях libcurl, включая ошибки сегментации, зависания, утечки памяти и проблемы производительности.
  • (LuaJIT) Исправить переполнение массива снимка. Часть проблемы 4171.
  • (LuaJIT) Исправить повторное сцепление псевдо-восстановленных строковых ключей. Часть проблемы 4171.
  • (LuaJIT) Исправить ошибки алгоритма свертывания. Проблема 4376.
  • (LuaJIT) Исправить debug.getinfo(1,“>S“). Проблема 3833.
  • (LuaJIT) Исправить записи string.find. Проблема 4476.
  • (LuaJIT) Исправлена ошибка нетонущих 64-битных указателей.
  • (Разное) Еще увеличить предел количества открытых файлов в файле systemd.
  • (Разное) Выдавать ошибку в tarantoolctl при отсутствии вызова box.cfg(). Проблема 3953.
  • (Разное) Поддерживать NOTIFY_SOCKET из systemd на OS X. Проблема 4436.
  • (Разное) Исправить coio_getaddrinfo() при передаче времени ожидания 0 (влияет на connect_timeout в netbox). Проблема 4209.
  • (Разное) Исправить coio_do_copyfile() для выполнения усечения места назначения (влияет на fio.copyfile()). Проблема 4181.
  • (Разное) Сделать подсказки в coio_getaddrinfo() необязательными.
  • (Разное) Проверять аргумент размера msgpack.decode(). Проблема 4224.
  • (Разное) Исправить привязку к статической библиотеке openssl. Проблема 4437.

Устаревшие функции

  • (Ядро) wal_max_size заменяет устаревший rows_per_wal. Часть проблемы 3762.

Версия 1.10.3

Тип версии: стабильная (lts). Дата выхода: 2019-04-01. Тег: 1-10-3.

Сообщение: https://github.com/tarantool/tarantool/releases/tag/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().

Изменения или добавления функциональности

  • (Движки) Слияние индексов в vinyl’е носит случайный характер. Проблема 3944.
  • (Движки) Регулировка потока tx, если слияние не успевает за созданием дампов. Проблема 3721.
  • (Движки) Отмена run_count_per_level для последнего уровня. Проблема 3657.
  • (Сервер) Отчет о количестве активных соединений iproto. Проблема 3905.
  • (Репликация) Удаление мертвой реплики, когда не хватает свободного места на диске. Проблема 3397.
  • (Репликация) Отчет о состоянии присоединения в журнале реплики. Проблема 3165.
  • (Lua) Отображение статуса снимка в box.info.gc(). Проблема 3935.
  • (Lua) Отображение имен Lua-функций в обратной трассировке fiber.info(). Проблема 3538.
  • (Lua) Проверка наличия открытой транзакции. Проблема 3518.

Исправленные ошибки

  • (Движки) Сбой Tarantool’а при гонке потоков DML и DDL. Проблема 3420.
  • (Движки) Ошибка восстановления при прерывании работы DDL. Проблема 4066.
  • (Движки) Коммиты Tarantool’а в режиме только для чтения. Проблема 4016.
  • (Движки) Сбой итератора vinyl’а при использовании DDL. Проблема 4000.
  • (Движки) Vinyl не завершает работу, пока не закончится создание дампа или слияние. Проблема 3949.
  • (Движки) После повторного создания вторичного индекса не видно данных. Проблема 3903.
  • (Движки) Незагруженность box.info.memory().tx. Проблема 3897.
  • (Движки) Vinyl замедляет скорость при интенсивных случайных вставках. Проблема 3603.
  • (Сервер) Новая версия libcurl вызывает переполнение стека файбера. Проблема 3569.
  • (Сервер) SIGHUP вызывает завершение работы Tarantool’а. Проблема 4063.
  • (Сервер) checkpoint_daemon.lua:49: неправильный аргумент №2 для „format“. Проблема 4030.
  • (Сервер) fiber:name() показывает только часть имени. Проблема 4011.
  • (Сервер) Второе переключение режима горячего резервирования hot standby может не сработать. Проблема 3967.
  • (Сервер) Обновление box.cfg.readahead не влияет на текущие соединения. Проблема 3958.
  • (Сервер) fiber.join() остается заблокирован в статусе „suspended“, если файбер был отменен. Проблема 3948.
  • (Сервер) Tarantool может завершить работу с ошибкой при отправке ненужных данных в бинарный сокет. Проблема 3900.
  • (Сервер) Хранимая процедура для создания push-сообщений не прерывается при отключении клиента. Проблема 3859.
  • (Сервер) Tarantool завершил работу с ошибкой в lj_vm_return. Проблема 3840.
  • (Сервер) Файбер, выполняющий box.cfg(), может обрабатывать сообщения из iproto. Проблема 3779.
  • (Сервер) Возможная регрессия на nosqlbench. Проблема 3747.
  • (Сервер) Утверждение после неправильного создания индекса. Проблема 3744.
  • (Сервер) Сбой Tarantool’а при запуске поvshard (lj_gc_step). Проблема 3725.
  • (Сервер) Репликация не запускается повторно на box.cfg, если конфигурация не изменилась. Проблема 3711.
  • (Репликация) Время работы наложения (applier) сокращается при чтении кортежей большого размера. Проблема 4042.
  • (Репликация) Сбой присоединения реплики Vinyl. Проблема 3968.
  • (Репликация) Ошибка во время репликации. Проблема 3910.
  • (Репликация) Статус downstream не отображается в replication.info, если канал не сломан. Проблема 3904.
  • (Репликация) Сбой репликации: несовпадение контрольной суммы tx. Проблема 3993.
  • (Репликация) Повторная настройка не производится, если на мастере есть строки из реплики. Проблема 3740.
  • (Репликация) После перезапуска состояние кортежей откатывается на дорепликационное состояние. Проблема 3722.
  • (Репликация) Добавление vclock для более безопасного переключения в режим горячего резервирования hot standby. Проблема 3002.
  • (Репликация) Строка из мастера исчезает при сбое записи в журнал упреждающей записи. Проблема 2283.
  • (Lua) Сбой преобразования space:frommap():tomap(). Проблема 4045.
  • (Lua) Неинформативное сообщение при попытке прочитать отрицательное значение счетчика байтов из сокета. Проблема 3979.
  • (Lua) space:frommap вызывает ошибку несовпадения кортежей («tuple field does not match…») даже для нулевого поля. Проблема 3883.
  • (Lua) Завершение работы Tarantool’а с ошибкой на net.box.call после нормальной работы с внутренним файбером vshard. Проблема 3751.
  • (Lua) Использование динамической памяти в lbox_error. Проблема 1955.
  • (Разное) http.client не подтверждает „connection: keep-alive“. Проблема 3955.
  • (Разное) Сломан wait_connected в net.box. Проблема 3856.
  • (Разное) Сборка Mac завершается с ошибкой в Mojave. Проблема 3797.
  • (Разное) Ошибка сборки FreeBSD: отсутствует поддержка SSL. Проблема 3750.
  • (Разное) „http.client“ выдает неправильную (?) причину. Проблема 3681.
  • (Разное) Http client молча изменяет заголовки, когда значение – не «строка» и не «число». Проблема 3679.
  • (Разное) yaml.encode использует многострочный формат для „false“ и „true“. Проблема 3662.
  • (Разное) yaml.encode неправильно кодирует „null“. Проблема 3583.
  • (Разное) Пустое сообщение объекта ошибки. Проблема 3604.
  • (Разное) Журнал переполняется предупреждениями. Проблема 2218.

Устаревшие функции

  • Опция console=true для net.box.new() объявлена устаревшей.

Версия 1.10.2

Тип версии: стабильная (lts). Дата выхода: 2018-10-13. Тег: 1-10-2.

Сообщение: https://github.com/tarantool/tarantool/releases/tag/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’е.

Изменения или добавления функциональности:

  • (Движки) поддержка изменения ALTER непустых спейсов в vinyl’е. Проблема 1653.
  • (Движки) кортежи, которые хранятся в кэше vinyl’а, не учитываются в индексах того же спейса. Проблема 3478.
  • (Движки) хранение стека операций обновления и вставки UPSERT в vy_read_iterator. Проблема 1833.
  • (Движки) box.ctl.reset_stat(), функция сброса статистики в vinyl’е. Проблема 3198.
  • (Сервер) настройка места назначения syslog. Проблема 3487.
  • (Сервер) допустимость неопределенного значения разного вида в индексах и форматах. Проблема 3430.
  • (Сервер) возможность осуществлять резервное копирование любой контрольной точки, а не только последней. Проблема 3410 (Сервер) допустимость :ref:`резервного копирования любой контрольной точки <reference_lua-box_backup-backup_start>, а не только последней. Проблема 3410.
  • (Сервер) метод, чтобы определить был ли запуск или перезапуск процесса Tarantool’а осуществлен с помощью tarantoolctl (переменные окружения TARANTOOLCTL и TARANTOOL_RESTARTED). Проблемы 3384, 3215.
  • (Сервер) конфигурационный параметр net_msg_max ограничивает число выделенных файберов. Проблема 3320.
  • (Репликация) отображение статуса соединения, если последующий сервер отключается от предыдущего (box.info.replication.downstream.status = disconnected). Проблема 3365.
  • (Репликация) спейсы с локальной репликацией Проблема 3443.
  • (Репликация) replication_skip_conflict, новый параметр в box.cfg{} для пропуска конфликтов строк при репликации. Проблема 3270.
  • (Репликация) удаление старых снимков, которые не нужны репликами. Проблема 3444.
  • (Репликация) запись в журнал попытки повторного коммита. Проблема 3105.
  • (Lua) новая функция fiber.join(). Проблема 1397.
  • (Lua) новая опция names_only для tuple:tomap(). Проблема 3280.
  • (Lua) поддержка специализированных серверов для модулей (опции server и only-server для команды tarantoolctl rocks). Проблема 2640.
  • (Lua) передача триггеров on_commit/on_rollback в Lua. Проблема 857.
  • (Lua) новая функция box.is_in_txn() для проверки наличия открытой транзакции. Проблема 3518.
  • (Lua) доступ к полю кортежа по JSON-пути (по номеру, имени и пути). Проблема`1285 <https://github.com/tarantool/tarantool/issues/1285>`_.
  • (Lua) новая функция space:frommap(). Проблема 3282.
  • (Lua) новый модуль utf8, который имплементирует привязки libicu для использования в Lua. Проблемы 3290, 3385.