Журнал изменений | Clusters_Federation
Примечания к версиям Журнал изменений

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

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

[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-пользователей при остановке.

Нашли ответ на свой вопрос?
Обратная связь