Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
233 changes: 232 additions & 1 deletion doc/release/enterprise-changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,240 @@ A :ref:`Tarantool Enterprise SDK <tarantool_enterprise>` version consists of two

For example: ``2.11.1-0-gc42d9735b-r589``.

- ``TARANTOOL_BASE_VERSION`` is the Community version which the Enterprise version is based on.
- ``TARANTOOL_BASE_VERSION`` is the Enterprise version.
- ``REVISION`` is the SDK revision. Besides Tarantool itself, it includes the ``tt`` utility, a set of open and closed source modules, and examples. Learn more from :ref:`Package contents <enterprise-package-contents>`.

r708
Comment thread
maryiaLichko marked this conversation as resolved.
----

Comment thread
maryiaLichko marked this conversation as resolved.
В релизе обновлены ключевые зависимости платформы: Tarantool 2.11.9 — bugfix‑релиз ветки 2.11,
ориентированный на повышение стабильности и предсказуемости работы.
В релизе улучшены диагностика и реакция на ошибки WAL, устранены зависания и проблемы обслуживания WAL‑файлов в Core,
а также внесён большой набор исправлений в LuaJIT и модуль Datetime.
Дополнительно обновлены и доработаны ключевые компоненты экосистемы (``crud``, ``vshard``, ``metrics``, ``tt-ee``, ``cartridge``, ``http``, ``graphqlapi-helpers``),
включая улучшения безопасной работы при ребалансировке, отказоустойчивого чтения и изменения в TLS/mTLS‑настройках HTTP.

Tarantool 2.11.8 -> 2.11.9
~~~~~~~~~~~~~~~~~~~~~~~~~~

Это bugfix-релиз: исправлено 34 проблемы с версии 2.11.8 (r702).

* Версия 2.x — предыдущая стабильная ветка; рекомендуется обновляться до 3.x.
* Чтобы обновиться с Tarantool 2.x на 3.x см. `процедуру обновления <https://www.tarantool.io/en/doc/latest/admin/upgrades/upgrade_cluster/#admin-upgrades-replication-cluster>`__.

Core
^^^^

**Добавлено:**

* Новое встроенное системное событие ``box.wal_error``, которое
рассылается каждый раз, когда Tarantool не удаётся зафиксировать
транзакцию в журнале предзаписи (WAL) (`gh-12585 <https://github.com/tarantool/tarantool/issues/12585>`__).

**Исправлено:**

* Ошибка, из-за которой Tarantool мог зависать при использовании ``box.watch`` (`gh-9632 <https://github.com/tarantool/tarantool/issues/9632>`__).
* Ошибка, при которой файлы ``.xlog.inprogress`` не удалялись
автоматически во время запуска сервера, если ``wal_dir`` задан и отличается от значения по умолчанию (`gh-12081 <https://github.com/tarantool/tarantool/issues/12081>`__).
* Ошибка, при которой локальный спейс нельзя было очистить
(truncate), если спейс ``_truncate`` настроен как синхронный (synchronous) (`gh-12585 <https://github.com/tarantool/tarantool/issues/12585>`__).


Выбор лидера
^^^^^^^^^^^^

* Если при записи в WAL возникает ``ER_WAL_IO``, текущий лидер при первом же
таком случае отказывается от своей роли.

LuaJIT
^^^^^^

Comment thread
maryiaLichko marked this conversation as resolved.
**Добавлено:**

* Поддержка ``ffi.abi("dualnum")`` для определения режима LuaJIT (dual-number: различение целых int64 и double).
* Добавлены флаги ``misc.memprof.available`` и ``misc.sysprof.available`` для
определения доступности соответствующего профайлера в текущей сборке.
Подробнее про профайлеры в разделах `LuaJIT memory profiler <https://www.tarantool.io/en/doc/latest/tooling/luajit_memprof/>`__ и `LuaJIT platform profiler <https://www.tarantool.io/en/doc/latest/tooling/luajit_memprof/>`__.

**Исправлено:**

* Некорректная генерация ``IR_TBAR`` на aarch64.
* Обработка переполнения стека при выходе из трассировки.
* «Висячие» ссылки на ``CType``.
* Закрытие состояния VM после раннего OOM.
* Генерация ``IR_MUL`` на x86/x64.
* Некорректное объединение инструкций ``stp``/ ``ldp`` на
aarch64.
* Инвалидизация записи SCEV при возврате в более низкий фрейм.
* Сборка на macOS 15/Clang 16.
* Генерация ``IR_HREFK`` на aarch64.
* Проверки стека в varargs-вызовах в сборке GC64.
* Проверки стека в ``pcall()``/ ``xpcall()`` в сборке GC64.
* Лимит аллокаций для сборки без JIT.
* Обработка ошибок OOM при расширении стека в ``coroutine.resume()``
и ``lua_checkstack()``.
* Запись (recording) циклов со значением шага ``-0`` или управляющими
значениями ``NaN``.
* Формирование сообщений об ошибках, когда ошибка возникает во время
обработки ошибки.
* «Висячая» ссылка для FFI callback.
* ``BC_UNM`` для аргумента ``-0`` в режиме ``dual-number``.
* Сужение (narrowing) унарного минуса в режиме ``dual-number``.
* Запись (recording) ``string.byte()``, ``string.sub()`` и
``string.find()``.
* Отсутствие преобразования типов для слотов ``BC_FORI`` в режиме
``dual-number``.
* Различные пограничные случаи в ``VM events``.
* Запись разрешения индекса конструктора в JIT-компиляторе.
* Предупреждение UBSan в ``unpack()``.


Модуль Datetime
^^^^^^^^^^^^^^^

**Исправлено:**

* Падение из-за срабатывания ``assert`` при разборе неоднозначной
даты: когда в тексте одновременно указаны день года (``yday``, который
неявно задаёт месяц и день месяца) и календарный месяц (без дня месяца).
Теперь такие случаи распознаются, и отображается ошибка.
* Вычисления ``tzoffset`` для случаев вида
``new({timestamp=x, tz='Zone'})``.
* Неконсистентность между датами, создаваемыми
``new({tzoffset=x})``, и ``d:set({tzoffset=x})``, когда ``d.tz ~= ''`` идёт
перед ``set()``.
* Теперь ``datetime.new()`` и ``datetime_object:set()`` проверяют, что значение
``timestamp`` находится в допустимом диапазоне.
* Проверка типа ``timestamp`` в ``set()``.

Для обратной совместимости добавлена опция
``compat.datetime_setfn_timestamp_type_check``. Сейчас она по умолчанию
выключена («старое» поведение), то есть проверка типа не выполняется. «Новое»
поведение с проверкой типа планируется сделать значением по умолчанию в версии 4.x.

.. note::

Ниже приведены модули, в которых произошли изменения.
Если модуль не указан в списке ниже, то обновления для него не выпускались.


crud 1.6.1 → 1.7.5
~~~~~~~~~~~~~~~~~~

.. note::

Начиная с CRUD 1.6.0 закрыта уязвимость, позволявшая выполнять операции, на которые у пользователя не было прав.
Теперь CRUD строго соблюдает права доступа: пользователь может выполнять только те действия, которые разрешены его привилегиями.
Если приложению требуется доступ к служебным спейсам, соответствующие права необходимо выдавать явно.

**Добавлено:**

* Метод ``crud.locate()`` для определения, где находится кортеж — в движке memtx или vinyl. Работает для спейсов, управляемых enterprise-модулем ``cooler``.
* В ``crud.len`` добавлена поддержка опций: ``mode``, ``balance``, ``prefer_replica``, ``request_timeout``.
* ``safe mode`` – безопасный режим, предотвращающий запись данных в неверный набор реплик во время ребалансировки vshard.
* Метрика ``tnt_crud_router_cache_clear_ts``, помогающая корректно отключать безопасный режим в кластере.
* Автоматическое переключение в безопасный режим при старте ребалансировки.
* Возможность вручную вернуть быстрый режим (``fast mode``).
* Метрика ``tnt_crud_storage_nil_bucket_id_compat_total`` для отслеживания операций, выполненных без ``bucket_ref`` (режим совместимости со старыми роутерами).

**Исправлено:**

* Операции только для чтения (``get``, ``select``, ``pairs``, ``count``, ``min``, ``max``) теперь выполняются через здоровые реплики, даже если все мастер-узлы в кластере недоступны.
* Совместимость узлов хранилища с роутерами версии < 1.7.0: в ``get``, ``update``, ``delete`` корректно обрабатывается ``bucket_id = nil``. В этом случае хранилище пропускает ``bucket referencing`` и пишет ``rate-limited`` предупреждение о сниженной безопасности ребаланса во время обновления без простоя (*rolling upgrade*).
* Ошибка ``bucket_ref`` в методах ``crud.*_many`` теперь возвращается в виде массива.
* Вызов ``bucket_unref`` вынесен из транзакции.
* Предотвращено создание дублирующихся метрик при повторном вызове ``init``.
* Предотвращено создание дублирующихся триггеров на спейсe ``_crud_settings_local`` при повторном вызове ``init``.
* Взаимная блокировка в ``crud.schema()`` после ошибки перезагрузки схемы.
* Удалена метрика ``tnt_crud_storage_safe_mode_enabled`` с роутера.
* Убрана обёртка ``wrap_box_space_func_result`` для сокращения аллокаций и ускорения вызовов узла хранилища.

**Изменено:**

* При переключении в безопасный режим прекращена практика пометки/остановки iproto файберов в быстром режиме; корректность операций на узле хранилища проверяется через ``yield_checks`` в тестах.
* Переключение в безопасный режим перенесено с триггера ``on_commit`` на ``on_replace``.
* Спейсы на движке vinyl всегда работают в безопасном режиме.

vshard 0.1.37 → 0.1.39
~~~~~~~~~~~~~~~~~~~~~~

Версия 0.1.39 полностью совместима с предыдущими версиями vshard.

**Добавлено:**

* Возможность отключать ограничитель частоты логирования (log rate limiter) через модуль ``consts``.

**Исправлено:**

* Проблема, из‑за которой старый мастер-узел не мог обнаружить новый мастер-экземпляр в пределах набора реплик.
* Утечка соединений: соединение не освобождалось сборщиком мусора после реконфигурации или перезагрузки.
* Ограничение транзакций при работе с ``_bucket``: ранее ``on_commit``‑триггер на ``_bucket`` блокировал запись в другие спейсы в
рамках той же транзакции (например, из ``on_replace``‑триггеров). Теперь такие сценарии разрешены — в ``on_commit`` пропускаются изменения, относящиеся к «чужим» спейсам.

metrics 1.6.2 → 1.7.0
~~~~~~~~~~~~~~~~~~~~~

* ``graphite``: добавлена возможность отправлять метрики на несколько серверов.
* Обратная совместимость с предыдущей версией плагина сохранена.
* Изменения в поведении:

- ``init`` теперь присваивает уникальное имя создаваемому файберу ``fiber`` на основе входных опций ``graphite server`` (если переданы).
- добавлен метод ``stop()`` для остановки всех файберов ``fibers``, запущенных плагином.


tt-ee v2.11.4 -> v2.12.0
~~~~~~~~~~~~~~~~~~~~~~~~

* Исправления, выявленные CVE-линтерами.
* ``tt pack``: добавлена поддержка вложенных файлов ``.packignore`` в корне
окружения tt.
* ``tt status``: добавлена опция ``--format`` для вывода в форматах JSON и YAML
(машиночитаемый вывод).


cartridge 2.16.4 → 2.16.6
~~~~~~~~~~~~~~~~~~~~~~~~~

**Изменено:**

* На странице кода дерево файлов больше не раскрывается автоматически по умолчанию.
* Зависимости:

- ``vshard`` с версии 0.1.37 до 0.1.39 (изменения см. выше).
- ``membership`` c версии 2.5.2 до 2.5.3. Обновлена версия CMake, чтобы избежать проблем совместимости с CMake 4.x.
- ``cartridge-metrics-role`` с версии 0.1.1 до 0.1.3. Обновлена версия CMake, чтобы избежать проблем совместимости с CMake 4.x. Исправлен CI: обновлена версия Ubuntu; вместо ``tarantoolctl`` теперь используется ``tt``.
- ``graphql`` с версии 0.3.0 до 0.3.1. ``luagraphqlparser`` обновлен до версии 0.2.1.
- ``http`` с версии 1.8.0 до 1.9.0 (изменения см. ниже).

**Исправлено:**

* Мониторинг синхронных спейсов с учётом фактического режима ``failover``:
предупреждение о синхронных спейсах теперь пишется в журнал только если ``failover`` настроен в режиме, который их не поддерживает (например, ``eventual`` или ``stateful`` без ``synchro_mode``), а не всегда при старте экземпляра;
в модуль ``cartridge.failover`` добавлена функция ``is_sync_spaces_supported()``; синхронные спейсы теперь определяются динамически, включая спейсы, добавленные во время работы.

http 1.8.0 → 1.9.0
~~~~~~~~~~~~~~~~~~

**Добавлено:**

* Опция ``ssl_verify_client`` .

**Исправлено:**

* Сервер больше не пересоздаётся, если его адрес и порт не изменились.
* Применение параметров сервера при перезагрузке конфигурации: сервер больше не остаётся без изменений после обновления настроек.

**Несовместимое изменение (Breaking change):**

* При указании ``ca_file`` взаимная TLS-аутентификация (mTLS) теперь включается по умолчанию.


graphqlapi-helpers
~~~~~~~~~~~~~~~~~~

* Обновление модуля ``graphqlapi-helpers`` с 0.0.9-1 на 0.0.11-1.
Новая версия работает без зависимостей от ``ddl-ee`` и ``crud-ee``.


r703
----
Expand Down
Loading