Журнал изменений¶
В этом документе содержится хронологически упорядоченный список изменений, внесенных в Tarantool Clusters Federation. Формат журнала изменений основан на документе Keep a Changelog, а версионирование следует правилам Semantic Versioning.
[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-пользователей при остановке.