VK Docs logo
Помощь
Обновлена 8 декабря 2025 г. в 10:14

Журнал изменений

В этом документе содержится хронологически упорядоченный список изменений, внесенных в Tarantool Clusters Federation. Формат журнала изменений основан на документе Keep a Changelog, а версионирование следует правилам Semantic Versioning.

[0.11.0] - 20-01-2026

В новом релизе расширены возможности конфигурации Gateway и Destination: добавлены новые параметры репликации, пакетной обработки, метрик и управления heartbeat, а также улучшена работа с Keycloak и журналированием. Кроме того, повышена стабильность системы — оптимизирован запуск подписки, снижена внутренняя нагрузка и исправлен ряд сбоев и аварийное завершение работы в Gateway и Destination.

Добавлено

  • Обнаружение отзыва auth-токена Keycloak через сервисного клиента для TCF-worker.
  • Обнаружение отзыва auth-токена Keycloak через сервисного клиента для репликаторов.
  • Опция heartbeat_interval в конфигурацию Gateway.
  • Поддержка полей storage и storage_params в конфигурации Gateway.
  • Параметр one_way_replication в Gateway.
  • Поле metrics_labels в конфигурации Gateway и Destination.
  • Поддержка полей batch_size и batch_timeout в конфигурации Gateway.
  • Переоткрытие журналов при получении сигнала SIGUSR1.
  • Поддержка полей batch_size и batch_timeout в конфигурации Destination.
  • Параметр read_snapshot_from_file в Gateway.

Изменено

  • Gateway теперь начинает подписку с минимально возможного значения vclock.
  • Убрана лишняя загрузка внутреннего space при записи транзакций.

Исправлено

  • Таймауты после перезагрузки сервера Gateway.
  • Аварийное завершение работы Destination после перезагрузки схемы.
  • Аварийное завершение работы Destination при вызове /tcf/status, если компонент ещё не инициализирован.
  • Ложные негативные логи при синхронной репликации.
  • Ошибка, из-за которой Destination не мог подписаться при длительном отсутствии внешних DML-событий.

[0.10.0] - 30-09-2025

Добавлена поддержка перезагрузки конфигурации репликаторов по сигналу SIGHUP, включая совместимость с logrotate. Также в состав архива TCF добавлена панель Grafana.

Добавлено

  • Панель Grafana включена в пакет TCF.
  • Корректная обработка сигнала SIGHUP в репликаторах.
  • Поддержка использования нескольких экземпляров Gateway в качестве источников репликации кластера.
  • Новая опция конфигурации gateway_clusters для Destination.
  • Поддержка профилирования репликаторов через пакет net/http/pprof.
  • Параметр конфигурации shards для Destination.
  • Параметр конфигурации destination_connect_timeout для Gateway.
  • Поддержка использования нескольких экземпляров Destination как получателей репликации.

Изменено

  • Пакет tcf-tarantool3-role теперь использует версию модуля vshard вместо vshard-ee.

Исправлено

  • Причина нездоровья кластера теперь журналируется, даже если кластер сразу инициализируется в статусе unhealthy без перехода состояния.
  • Ошибка на вкладке Settings в веб-интерфейсе Cartridge при пустых конфигурационных полях.
  • Нарушение метрик tcf-worker после перезапуска репликатора с повторной инициализацией (rebootstrap).

[0.9.0] - 04-07-2025

В этом релизе представлена интеграция с Keycloak для авторизации HTTP API. Кроме того, релиз содержит несколько важных исправлений, включая обработку операции truncate.

Добавлено

  • Поддержка сборки с TDG 2.13.
  • Параметр dial_timeout в конфигурации Destination для подключения к Gateway.
  • Поддержка авторизации через Keycloak для технологической роли TCF-worker.
  • Поддержка авторизации через Keycloak для Gateway и Destination.
  • Поддержка внутренних HTTP API вызовов при включенной авторизации.
  • Статус stopped для Destination.

Изменено

  • vshard-ee обновлен до версии 0.1.33 для tcf-tarantool3-role.
  • [Breaking change]: удалена поддержка частичного truncate в шардированном кластере. Операции truncate должны выполняться на каждом шарде отдельно, как в crud.truncate. Каждая транзакция truncate должна быть отдельной операцией.

Исправлено

  • Репликация для запросов update/upsert с оператором удаления #.
  • Репликация для запросов update/upsert с операцией строкового сращивания :.
  • Зависание Destination при неудачном подключении к Gateway.
  • Репликация становилась двунаправленной после перезагрузки репликатора.
  • Destination не будет завершаться с ошибкой при переподключении к Gateway, если было потеряно соединение хотя бы с одним исходным экземпляром кластера.
  • truncate мог приводить к конфликтам данных.
  • Частичное применение truncate не завершалось после перезапуска.

[0.8.0] - 08-04-2025

В этом релизе представлены метрики компонентов и Grafana дашборд для мониторинга.

Добавлено

  • Метрики vclock signature для Gateway, Destination и TCF-worker.
  • Сбор метрик по статусам ответов HTTP API Gateway, Destination и TCF-worker.
  • Метрика информации об имени приложения у репликаторов.
  • Поле alias в конфигурации для репликаторов.
  • alias для каждой метки метрик репликаторов
  • Обновление cdc-sdk, перенесённого на библиотеку go-replica из GitLab.

Исправлено

  • Работа метрик компонентов Gateway и Destination.
  • Стиль меток метрик компонентов Gateway и Destination.
  • Сборка Tarantool 3 rock в части хранения конфигурации.
  • CVE-2025-30204 в JWT-клиенте etcd.
  • Разыменование nil при запуске HTTP API Gateway и Destination.

[0.7.1] - 12-03-2025

В этом релизе представлены несколько исправлений, связанных с конфигурацией, процессом репликации и мониторингом.

Исправлено

  • "Empty replicaset" signature в ответе статуса после очистки спейса или повторной инициализации.
  • Ошибка при пустой конфигурации технологической роли roles.tcf-coordinator.
  • В случае конфигурации с vshard, событие от активного кластера будет отправлено во все наборы реплик пассивного кластера, если у спейса нет параметра bucket_id.
  • Уточнена ошибка при неинициализированном HTTP-сервере.

[0.7.0] - 26-02-2025

В этом релизе добавлена полноценная поддержка спейсов с синхронной репликацией и проведены существенные доработки журналирования.

Добавлено

  • Поддержка работы с WAL extensions.
  • Отслеживание owner id исходного набора реплик.
  • Отслеживание подтверждённого vclock от исходного набора реплик.
  • Восстановление состояния очереди лимба после перезапуска.

Изменено

  • Формат записей журнала Gateway и Destination теперь основан на видоизменённом формате log/slog вместо стандартного go.uber.org/zap.
  • Возвращение явной ошибки при некорректной конфигурации логгера.

Исправлено

  • Утечка памяти из Gateway из-за незавершённых горутин.
  • Используется только первый узел из конфигурации Tarantool config storage в качестве хранилища состояния.
  • promote: не удаётся поменять статус активного кластера, если пассивный кластер недоступен.
  • promote: не удаётся выполнить, если оба кластера являются пассивными.

[0.6.1] - 31-01-2025

Изменено

  • Завершение работы с ошибкой, если лимб получает асинхронные записи, пришедшие не от текущего владельца очереди, после выполненного promote.
  • Отключены повторные попытки bootstrap на нижнем уровне.

Исправлено

  • Устранена потеря последних событий снимка состояния, возникавшая из-за состояния гонки.
  • Удалён параметр MaxReconnects у коннектора: если роутер долго был отключён, соединение было невозможно переиспользовать.
  • Выбор роутера в Destination стал предсказуемым.
  • После повторного подключения Destination к Gateway, Destination начинал получать данные не с того места, где остановился, а с самого начала потока репликации.
  • Ошибка восстановления replicaset pusher в Destination игнорировалась.
  • Исправлена ошибка, из-за которой Destination мог завершаться сбоем при одновременной обработке транзакций.
  • Устранены ложные сообщения Signature mismatch при параллельных транзакциях от source replicaset.
  • Лимб неподтвержденных транзакций не обрабатывал поток репликации с асинхронными записями WAIT_SYNC, записанными после RAFT_CONFIRM.
  • Ошибки потока на стороне Gateway не обрабатывались.
  • Ошибки запуска Destination не обрабатывались.

[0.6.0] - 19-12-2024

Добавлено

  • Поддержка работы без использования vshard.
  • Поддержка IPROTO-запроса InsertArrow.
  • Поддержка работы с синхронными спейсами.

Изменено

  • Параметры хранилища конфигурации на основе Tarantool теперь полностью соответствуют формату конфигурации Tarantool.

Исправлено

  • Поведение проверки доступности (health check) для Tarantool 3.3.

[0.5.0] – 22-11-2024

Устарело

  • Поле destination.gateway в конфигурации межкластерных репликаторов данных. Рекомендуется использовать destination.gateways.

Добавлено

  • Примеры репликации TCF между кластерами Tarantool Cartridge и Tarantool 3.x EE с использованием etcd и хранилища конфигурации и состояния на основе Tarantool.
  • Поддержка TLS для gRPC-соединения между Gateway и Destination.
  • Пошаговое руководство по миграции с Cartridge + Cartridge на Tarantool 3 + Tarantool 3 с etcd и Tarantool Config Storage.
  • Поддержка TLS в HTTP API у Gateway и Destination.
  • Поддержка группы экземпляров Gateway для Destination.

Изменено

  • Destination может работать без vshard.
  • Ошибки при обнаружении бакетов в Cartridge теперь не просто записываются в журнал, а обрабатываются – например, срабатывает повторная попытка или выдается понятное сообщение об ошибке.
  • Если для уже работающего кластера поменять хранилище состояний на новое (пустое), то последнее известное состояние кластера будет записано в это хранилище.
  • Пакет etcd-client включён в tcf-cartridge-role-scm-1.rockspec.
  • Обновлена версия модуля http до 1.7.0.

Исправлено

  • Ложная ошибка в Destination при bucketID - 1 == bucketCount.
  • Кластерные координаторы Tarantool 3.x игнорировали параметры storage и storage_params.
  • Возможная ошибка сегментации при вызове метода GetEvents у Gateway.

[0.4.0] - 22-10-2024

Добавлено

  • mage теперь автоматически увеличивает лимит открытых файлов в системе перед запуском тестов. Добавлена подсказка, как сделать это вручную.
  • Возможность изменить префикс хранилища с /tcf на любой другой через параметр storage_params.prefix в конфигурации ролей кластера.
  • Флаг командной строки --version для бинарных файлов Destination и Gateway.

Изменено

  • Gateway теперь передаёт кортежи без поля bucket_id.
  • Обновлена CI для сборки и публикации документации:
    • документация из ветки master собирается только для тестового сайта, на сайт tarantool.io документация не публикуется;
    • для версии latest на основном сайте переключена ветка с master на release-0.2.x;
    • добавлен процесс удаления старых сборок документации.
  • Добавлена возможность настроить хранение etcd_v2 для Cartridge через storage: etcd_v2 и секцию storage_params в конфигурации ролей кластера, если failover etcd не настроен.

Исправлено

  • Отображение версии для Destination, Gateway и ролей.

[0.3.1] - 04-10-2024

Добавлено

  • Пример репликации TCF между кластерами Tarantool Cartridge и Tarantool 3.x EE.
  • Отчёт по покрытию кода тестами в CI и команды mage с разными скриптами для сбора информации о покрытии.
  • Поддержка интеграции roles.httpd для кластера Tarantool 3.x EE;
  • Тесты с использованием хранилища на основе Tarantool в качестве хранилища состояний.

Изменено

  • Вывод тестов теперь сохраняется в файл.
  • Не генерируется TRUNCATE при обработке снимка состояния.
  • Метрика worker stopped устанавливается только когда TCF-worker действительно остановлен.
  • Для новых наборов реплик всегда начинается загрузка снимка состояния.
  • Обработка xlog начинается только после завершения процесса загрузки снимка состояния.
  • Используется конфигурация для проверки, является ли экземпляр роутером или хранилищем шарда.
  • В тестах для Tarantool 3 добавлено ожидание готового vshard.
  • Технологические роли TCF перемещены в репозиторий cluster-federation.

Исправлено

  • Работа с конфигурацией etcd/хранилища на основе Tarantool, заданной через переменные окружения.
  • Ошибки golangci теперь учитываются в CI-пайплайнах.
  • Ложные сообщения об ошибке "Signature mismatch" в записях журнала Destination.
  • Потеря последнего события снимка состояния (snapshot) из-за состояния гонки.
  • Ошибка при запуске bootstrap с реплик хранилища.
  • Ошибка переключения кластера сразу после предыдущего переключения.

[0.3.0] - 09-09-2024

Добавлено

  • Документация.
  • Поддержка хранилища состояния etcd v3.
  • Поддержка хранилища состояния на основе Tarantool.
  • Технологические роли TCF для Tarantool 3.x;
  • Поддержка Tarantool 3.x в компонентах Gateway и Destination;
  • Пример конфигурации кластера Tarantool 3.x.

Изменено

  • Добавлены дополнительные проверки для разных случаев, когда результат недействителен.
  • Пропуск загрузки схемы при подключении.
  • Корректная проверка состояния участника кластера Cartridge.
  • Плавное переключение (toggle) происходит только если есть связь с кластером.

Исправлено

  • Состояние гонки при инициализации.
  • Кластер, который был пассивным, снова может стать активным.
  • Проверка статуса набора реплик.
  • Блокировки etcd v2 и v3.
  • Проверка синхронности.
  • Перевод в активное состояние предварительно пассивного кластера.
  • Настройка DML-пользователей при остановке.