13. История изменений

13.1. RU

13.1.1. v1.0.2

Выпущена: 17.11.2024

Исправлено:

  • cookctl fixpermissions проваливалось, если опция slave_log_directory не задана в конфигурации. RS-262642.

  • TTL блокировки ведущего была слишком короткой, что могло привести к переключению мастера. RS-262736.

  • Исправлена поддержка метрик в Python 3.8. RS-262910.

Улучшено:

  • Добавлен доступ к тонким настройкам адаптивной репликации. RS-262320.

  • Добавлены зависимости Python 3.13 и 3.14 в инсталлятор для Linux. RS-262568.

  • Добавлены примеры конфигурации gobetween и consul в инсталляторы. RS-262569.

13.1.2. v1.0.1

Выпущена: 12.11.2024

Исправлено:

  • Инсталлятор для linux требует Python 3.9 и выше. RS-261774.

  • В службе windows не поддерживается уровень логирования TRACE. RS-262095.

13.1.3. v1.0.0

Выпущена: 1.11.2024

Добавлено:

  • Поддержка адаптивной репликации (требуется Ред База Данных 5.1.1 или выше) RS-53644.

  • Поддержка восстановления транзакций на ведущем после сбоя (требуется Ред База Данных 5.1.1 или выше). RS-210865.

  • Узлы теперь регистрируются в кластере при инициализации. Возможность видеть даже оффлайн узлы в статусе кластера. RS-150391.

  • Команда удаления узла из кластера cookctl unregister <nodename>. RS-219046.

  • Команда перевода узла в режим реплики cookctl demote <nodename>. RS-229008.

  • Опционально «мягкая» реакция на ошибки в репликации и сервера. RS-160656.

  • Логирование в json-формате. RS-149155.

Улучшено:

  • Узлы с allowfailover=0 теперь могут становиться ведущим принудительно (cookctl promote). RS-218481

  • Возможность добавлять БД в кластер без указания ее в конфиге. RS-201495.

  • Более подробное отображение конфигурации репликации в cookctl status. RS-173073.

  • Cookctl при подключении к cookd при возможности будет использовать хост advertised из конфигурации. RS-256676

13.1.4. v0.6.4

Выпущена: 10.10.2024

Улучшено:

  • Разделенная настройка верификации для входящих и исходящих соединений API и клиента. RS-195992

13.1.5. v0.6.3

Выпущена: 12.09.2024

Улучшено:

  • Теперь можно указать необходимые алгоритмы шифрования TLS для сервера API RS-193865

Исправлено:

  • Настройка HTTP-таймаутов не применяется при перезагрузке конфигурации RS-179879

13.1.6. v0.6.2

Выпущена: 27.02.2024

Исправлено:

  • Скаченные архивы игнорируются при попытке запроса их через REST API RS-165068

  • Если в PID файле мусор, то cook не стартует RS-160653

  • Падение при обработке невалидного конфига RS-157553

13.1.7. v0.6.1

Выпущена: 13.09.2023

Исправлено:

  • Невозможно инициализировать узел методами «as_is» или «shell» RS-147778 RS-147781

13.1.8. v0.6.0

Выпущена: 15.08.2023

Добавлено:

  • Команда fixpermissions в cookctl для установки прав на права и каталоги RS-143642

Исправлено:

  • Не проверялся идентификатор кластера и хранилища при запуске RS-143641

  • Не хватает прав при запуске cookd из текущего каталога RS-142574

13.1.9. v0.5.2

Выпущена: 13.09.2023

Исправлено:

  • Невозможно инициализировать узел методами «as_is» или «shell» RS-147778 RS-147781

13.1.10. v0.5.1

Выпущена: 15.08.2023

Исправлено:

  • Не проверялся идентификатор кластера и хранилища при запуске RS-143641

  • Не хватает прав при запуске cookd из текущего каталога RS-142574

13.1.11. v0.5.0

Выпущена: 09.06.2023

Добавлено:

  • Команда shutdown в cookctl для остановки всех узлов RS-97153

  • Команда recreate в cookctl для переинициализации данных на узле RS-62521

  • Команда logs ls в cookctl для перечисления доступных архивов и логов RS-97160

  • Команда logs find в cookctl для поиска файла архива или лога RS-97160

Исправлено:

  • Некорректно завершаются процессы rdbserver при использовании архитектуры Classic RS-99685

  • Не проверяется существование каталога репликации с логами master RS-97243

  • Некорректно выполняется promote RS-106972 RS-107282

  • Узел ошибочно участвует в выборе master, даже если не выполнил процедуру failover RS-107298

  • Сломанный кластер при потере связи с Consul RS-107408

  • Стандартный конфиг Gobetween оставляет подключения к последнему узлу, если в кластере не найден master RS-139845

  • История кластера выводится без сортировки RS-140399

13.1.12. v0.4.3

Выпущена: 13.09.2023

Исправлено:

  • Невозможно инициализировать узел методами «as_is» или «shell» RS-147778 RS-147781

13.1.13. v0.4.2

Выпущена: 25.05.2023

Исправлено:

  • Сломанный кластер при потере связи с Consul всеми узлами RS-107408

  • Узел ошибочно участвует в выборе master, даже если не выполнил процедуру failover RS-107298

  • При promote не проверяется, корректно ли получена история кластера RS-107282

13.1.14. v0.4.1

Выпущена: 11.05.2023

Исправлено:

  • Некорректно завершаются процессы rdbserver при использовании архитектуры Classic RS-99685

  • Не проверяется существование каталога репликации с логами master RS-97243

  • Некорректно выполняется promote RS-106972

13.1.15. v0.4.0

Выпущена: 21.03.2023

Добавлено:

  • Анализ логов firebird.log и replication.log на предмет фатальных для репликации ошибок и вывода узла из репликации RS-55210

  • Отображение прогресса копирования базы через nbackup RS-82917

  • Регулярные выражения для сопоставления кластерной базы с локальной при инициализации реплики RS-82877

  • Генерация конфигурации Gobetween в Consul RS-74865

Изменено:

  • Теперь узел аварийно остановится, если обнаружит файлы другого кластера RS-97506

  • Теперь стандартный системный путь к конфиг используется в cookctl тоже RS-97394

  • Теперь узел ждет готовность каталога репликации и не становится репликой RS-97243

Исправлено:

  • Создаются лишние каталоги репликации RS-97393

  • При failover к реплике применяется лишний архив RS-97499

  • Узел не обновлял состояние при остановке RS-98272

  • Логи могли не скачаться при отставании реплики на несколько поколений RS-98274

  • Исправлена работа двустороннего TLS между узлами Cook и Consul RS-98386 RS-98385 RS-98383

  • Узел пытался синхронизироваться с кластером, даже при отсутствующем Master RS-98142

13.1.16. v0.3.2

Выпущена: 20.03.2023

Изменено:

  • Поставляемый Consul в дистрибутиве Windows обновлен до 1.15.1

13.1.17. v0.3.1

Выпущена: 16.03.2023

Изменено:

  • Cookctl теперь использует стандартный путь к конфигу /etc/cook/cookd.yml в Linux и cookd.yml в текущей директории в Windows RS-97394

  • Узел будет остановлен, если при инициализации кластера обнаружатся данные другого кластера RS-97506

Исправлено:

  • Проверять готовность каталога репликации на реплики и не стартовать репликацию, при его отсутствии RS-97243

  • При failover к реплике применяется лишний архив RS-97499

  • Создаются лишние пустые каталоги репликации RS-97393

  • Узел не обновлял состояние при остановке RS-98272

  • Логи могли не скачаться при отставании реплики на несколько поколений RS-98274

13.1.18. v0.3.0

Выпущена: 02.09.2022

Добавлено:

  • Добавление и удаление баз данных в инициализированном кластере RS-76629

  • Приоритет узлов для назначения master при автоматическом failover RS-53643

Изменено:

  • Теперь реплики мониторят блокировку master, вместо простого ожидания, для более быстрого старта процесса failover RS-82315

  • Пароли из конфигурации маскируются в логах RS-83178

  • Узлы останавливают работу, если невозможно восстановить данные или инициализировать реплику

Исправлено:

  • Подсистема Ред Базы Данных выставляет флаг необходимости перезагрузки, только если ее параметры были изменены RS-63556

  • Исправлена работа команды allowfailover в cookctl RS-82157

13.2. EN

13.2.1. v1.0.2

Released: 17.11.2024

Fixed:

  • cookctl fixpermissions failed if slave_log_directory not defined in config. RS-262642.

  • TTL of lock was too small which can lead to master lost. RS-262736.

  • Fixed metrics support for python 3.8. RS-262910.

Improved:

  • Allow fine-tune adaptive replication. RS-262320.

  • Bundle python 3.13 and 3.14 dependencies into linux installer. RS-262568.

  • Add simple consul and gobetween config examples to installers. RS-262569.

13.2.2. v1.0.1

Released: 12.11.2024

Fixed:

  • Linux installer required Python 3.9+. RS-261774.

  • Windows service do not support TRACE log level. RS-262095.

13.2.3. v1.0.0

Released: 1.11.2024

Added:

  • Support adaptive replication (Red Database 5.1.1 or greater required). RS-53644.

  • Support of transaction recovery on crashed primary (Red Database 5.1.1 or greater required). RS-210865.

  • Nodes registering after initialization. Ability to see offline nodes in cluster status. RS-150391.

  • Node removing command cookctl unregister <nodename>. RS-219046.

  • Node demoting command cookctl demote <nodename>. RS-229008.

  • Optional «soft» reaction on errors detected in replication or firebird log. RS-160656.

  • Logging with json format. RS-149155.

Improved:

  • Nodes marked as allowfailover=0 can be promoted manually (cookctl promote). RS-218481

  • Ability to add database to cluster without addint it to config. RS-201495.

  • More detailed replication status in cookctl status output. RS-173073.

  • Cookctl prefer advertised host from config. RS-256676

13.2.4. v0.6.4

Released: 10.10.2024

Improved:

  • Split configuring of in- and outbound connections verification for API and client. RS-195992

13.2.5. v0.6.3

Released: 12.09.2024

Improved:

  • Ability to set TLS ciphers for API server RS-193865

Исправлено:

  • HTTP-timeouts not adjusted on config reload RS-179879

13.2.6. v0.6.2

Released: 27.02.2024

Fixed:

  • Received archives ignored when trying to download with Cook’s REST API RS-165068

  • Unable to start cookd if PID-file have garbage RS-160653

  • Crash if local config have invalid characters RS-157553

13.2.7. v0.6.1

Released: 13.09.2023

Fixed:

  • Unable to initialize node with «as_is» and «shell» methods RS-147778 RS-147781

13.2.8. v0.6.0

Released: 15.08.2023

Added:

  • Command fixpermissions for cookctl to fix owner and permissions of files and directories RS-143642

Fixed:

  • Check if cluster ID in storage and cluster ID obtained from config are equal. RS-143641

  • Change working dir to RBD home before spawning rdbserver RS-142574

13.2.9. v0.5.2

Released: 13.09.2023

Fixed:

  • Unable to initialize node with «as_is» and «shell» methods RS-147778 RS-147781

13.2.10. v0.5.1

Released: 15.08.2023

Fixed:

  • Check if cluster ID in storage and cluster ID obtained from config are equal. RS-143641

  • Change working dir to RBD home before spawning rdbserver RS-142574

13.2.11. v0.5.0

Released: 09.06.2023

Added:

  • Command shutdown for cookctl to stop whole cluster RS-97153

  • Command recreate for cookctl for reinitialization node data RS-62521

  • Command logs ls for cookctl to enumerate all archives and logs on node RS-97160

  • Command logs find for cookctl to search log or archive file RS-97160

Fixed:

  • Classic architecture processes terminated incorrectly RS-99685

  • Master replication directory existence not checked RS-97243

  • Promote command executed wrongly RS-106972 RS-107282

  • Node can be wrongly promoted even if not properly failovered RS-107298

  • Broken cluster if all nodes failed to contact Consul RS-107408

  • Default Gobetween config leaving stale node connections even if cluster do not have master RS-139845

  • Cluster history not sorted RS-140399

13.2.12. v0.4.3

Released: 13.09.2023

Fixed:

  • Unable to initialize node with «as_is» and «shell» methods RS-147778 RS-147781

13.2.13. v0.4.2

Released: 25.05.2023

Fixed:

  • Broken cluster if all node failed to connect Consul RS-107408

  • Slave node can be chosen next master even if without failover process RS-107298

  • During promoting cluster history not checked for correctness RS-107282

13.2.14. v0.4.1

Released: 11.05.2023

Fixed:

  • Classic architecture processes terminated incorrectly RS-99685

  • Master replication directory existence not checked RS-97243

  • Promote command executed wrongly RS-106972

13.2.15. v0.3.2

Released: 20.03.2023

Changed:

  • Update bundled Consul to 1.15.1

13.2.16. v0.3.1

Released: 16.03.2023

Changed:

  • Use system config /etc/cook/cookd.yml as default on Linux and from current dir on Windows if running from frozen binary RS-97394

  • Stop master if found another cluster data during initialization RS-97506

Fixed:

  • Basic check if replication directory sane to avoid starting replication/catchup from not existing directory RS-97243

  • Avoid catching extra archive during failover RS-97499

  • Avoid creating empty replication directories RS-97393

  • Node state not updated during stop RS-98272

  • Catchup can fail if slave left behind for several generations RS-98274

13.2.17. v0.3.0

Released: 02.09.2022

Added:

  • Ability to add and remove databases from cluster RS-76629

  • Ability to set slave priority for automatic failover RS-53643

Changed:

  • Passwords masked in log output RS-83178

  • Now slaves monitoring master key change instead simple waiting between cluster steps to speed up failover initiation RS-82315

  • Stop node if unable to recover data or initialize slave

Fixed:

  • RDB subsystem now gets pending restart flag only if RDB config actually changed RS-63556

  • Fixed allowfailover in cookctl RS-82157

13.2.18. v0.2.7

Released: 26.08.2022

New:

  • Add more node monitoring info into REST API /status output RS-85696

Fixed:

  • Properly demote data during consul communication failure RS-86067

13.2.19. v0.2.6

Released: 19.08.2022

Changed:

  • Allow to set exclude_without_pk = 0 for master instead hardcoded „1“ RS-85743

13.2.20. v0.2.5

Released: 12.08.2022

Fixed:

  • Fixed automatic master and slave recovery if last logs are free RS-85369 RS-85368

13.2.21. v0.2.4

Released: 07.07.2022

Improved:

  • Adjust buffering during database copy transmission RS-83484

Fixed:

  • Avoid unnecessary recover after replica initialization RS-83484

  • Sometimes nbackup unable to connect database because another engine already connected RS-83549

13.2.22. v0.2.3

Released: 24.06.2022

Changed:

  • Temporary database files stored in database destination directory instead system temp RS-82923

Fixed:

  • Stale rdbserver processes can be skipped and not killed in some cases RS-82862

  • Default log level INFO were not applied by default RS-82916

  • Slave which failed to initialize not removing databases RS-82936

13.2.23. v0.2.2

Released: 21.06.2022

Changed:

  • More compact output in cookctl and expanded with -v/–verbose RS-76708

Fixed:

  • Server can not start if server config bigger than 256 bytes RS-82702

  • In some cases gstat can return 0 retcode, so check stderr too RS-76714

  • Wrong database mode in storage file RS-82229

  • Slave sometimes can fail to recover with error «Can not update position of standalone» RS-82316

  • Master can fail to replay it’s latest log when recovering RS-82701

  • Cook can hang when dumping log if log is not file RS-82732

13.2.24. v0.2.1

Released: 06.06.2022

Fixed:

  • Windows service could not start on some configurations

  • Removed unwanted trace output

Changed:

  • Metadata marked by version in which were changed instead current version RS-76711

  • Bundle consul, gobetween and nssm into windows archive RS-71321

13.2.25. v0.2.0

Released: 25.04.2022

New:

  • Multiple databases support RS-71321

Changed:

  • Single lock for initialization/master to speedup init+promote and minimize racing for this locks RS-67771

  • Minimize cluster metadata overhead by loading cluster history separately RS-74382

  • More compact CLI output RS-66495

  • Optimize last lines of logs dumping for large log files RS-73517

13.2.26. v0.1.0

Released: 21.12.2021

Fixed:

  • Node will recover all possible archives and logs and will not trust data position in Consul RS-56202 RS-69931

  • rdbserver’s pid-file can contain wrong process PID after server or container crash RS-71040

  • Sometimes new database initialization unsuccessful RS-70725 RS-68045

  • Replication connection on slave do not allow remote connections RS-70612

  • Unable to initialize cluster with default config RS-69889

  • promote can stuck if no nodes to be new master RS-68576

  • FDB driver crashing RS-67776

Added:

  • Maintenance mode which allows node ignore state of cluster and rdbserver health RS-62798

  • User defined way to initialize replica. Added local option rdb.slave_init to change replica initialization way (disable, nbackup, as_is and shell). Added local option rdb.slave_init_command to define shell command for slave initialization RS-68618

  • Local options cook.advertise/rdb.advertise can be used to define external interface for connection RS-69933

  • Dumping firebird.log and replication.log on some errors if local option rdb.dump_logs is True RS-71669

  • Cook API port availability can be omitted if cook.check_port is False RS-68986

  • –version argument for utilities RS-67298

Changed:

  • Cook docker container now opens AUX port 3051 by default RS-67387

  • Bump minimal RDB version to 3.0.8 RS-71584

13.2.27. v0.0.10

Released: 06.05.2021

Fixed:

  • Avoid corruption of position file when renaming by using atomic os.rename #62005

Added:

  • Cookd will configure databases.conf and will add alias with database filename or custom alias rdb.alias #62520

Changed:

  • Now only master sweeps archives if rdb.external_archive_transfer used #59727

  • API port checked for availability to listen before starting API thread and node loop #62577

  • Option init.disable removed. Now node will initialize cluster if init section exists #62803

  • New windows binaries built with cx_Freeze #55679

13.2.28. v0.0.9

Released: 13.04.2021

Fixed:

  • Fixed wrong cluster position update after promote error #62594

  • Fixed init lock loosing during background task #62473

  • Better network errors handling #55850

Added:

  • Load fbclient library from RDB_HOME variable #62574

13.2.29. v0.0.8

Released: 25.02.2021

Fixed:

  • Avoid loosing data on failed master by applying latest log to master itself #60335

  • Check failed master last log sequence by reading log files directly to avoid starting server #56169

  • Avoid closing nbackup session prematurely #60672

  • Avoid unnecessary replication by using -NODBTRIGGERS and -COPY in nbackup #60596

  • Fixed replication position when downloading master logs #60592

  • Support replication utilities with rdb* prefix #60517

  • Fixed replication position when catching up archives of failed master #56159

  • Fixed wrong cluster position after unsuccessful master promoting #55709

  • Avoid connecting slaves to master before promoting finished #55744

Changed:

  • Bump minimal RDB version to 3.0.5.354 #60672

Added:

  • Added nbackup stderr if something was wrong during database copy #60720

  • New PDF and HTML documentation #55626

13.2.30. v0.0.7

Released: 16.11.2020

Fixed:

  • Try to avoid position file corruption on hard reset

  • Properly create directories when catching up master

  • Do not flush master logs after master failure if rdb.external_archive_transfer used

  • Fixed leaving cluster if server stopped unexpectedly

  • Start server when catching up archives (for windows) and stop after updating status

  • Try to avoid incrementing data and cluster position in case failed promoting #55047

  • Fixed slave initialization in windows

Changed:

  • Now monitoring connection do not fire DB triggers #55063

Added:

  • Register aux port (3060 by default) as consul service. Can be changed by local option rdb.aux_port

  • Ansible based windows demo stand (misc/cook-demo-win)

13.2.31. v0.0.6

Released 28.10.2020

Fixed:

  • Avoid multiple cluster initialization on simultaneous nodes start #54826

Added:

  • Ansible based demo stand (misc/cook-demo) #54741

13.2.32. v0.0.5

Released 22.10.2020

Fixed:

  • Always recover database after leaving cluster #54705

  • Do fb_shutdown for fdb on sys.exit to avoid segfault #54651

  • Implicitly close nbackup and call on_close handler if NBackupWrapper wasn’t closed explicitly #54622

  • Handle error response from node without json body

  • Do not allow copy database if node is not master

Changed:

  • Avoid mixing archives and logs from different clusters. Now all archives and logs resides in subdirectory named as cluster UUID #54628

  • Use default config from /etc/cook/cookd.yml on posix systems #54627

Added:

  • Allow configure loggers with environment variable: COOK_LOGGERS=cook:INFO,cook.api:DEBUG #54354

  • Simple Dockerfile for building image of RDB 3.0.5.1 with cook #54354

  • Sample docker-compose scenery with gobetween #54354

  • Add –test-config option to cookd for testing configuration file and environment without starting node #54610

  • Add sample config to misc/cookd.yml and README #54585

13.2.33. v0.0.4

Released 16.10.2020

Fixed:

  • Remove stalled master lock after consul offline/node demote/consul online #54463

  • Catch errors on cluster config obtaining and handle exceptions during and do not allow raise exception out of cluster step #54463

  • Properly set FDBUtils initialization flag and release it before actual exit #54416

  • Do not allow multiple slaves initializing to avoid replication errors #54069

  • Do sys.exit on INT/TERM signals if cook not started instead endless looping #54415

Changed:

  • Slave now leaves cluster on consul errors #54463

  • Stop fence right after demote/stop. We do not need to wait releasing locks after stopping #54463

  • Serve flask multithreaded #54457

13.2.34. v0.0.3

Released 09.10.2020

Fixed:

  • Fix incomplete archives transferring on linux #54237

  • Now if promote failed, cookd will try demote database and stop fencing #54212

  • Fix wait for downloads from slave once again

Changed:

  • slave_log_directory will be configured automatically only if rdb.external_archive_transfer is False #54171

  • During async task will not update cluster position

Added:

  • Windows service cookdsvc.exe #54033

  • Allow override archive command with local config option rdb.archive_command #54237

  • Allow override slave log directory with local config option rdb.slave_log_directory #54171

  • Add cookd version to cluster metadata and check if cook too old #53274

  • Show RDB version in node metadata #53275

13.2.35. v0.0.2

Released 02.10.2020

Fixed:

  • Now bool options for firebird.conf and replication.conf generated as 0/1

  • Fixed python 3.6 compatibility

Changed:

  • Replication archives prefixed with _cook_async_repl_

Added:

  • Shared directory replication mode

  • Basic fencing capability based on watchdog

  • Slaves initialized by nbackup streaming

  • Now old archives removed from nodes automatically

  • Logging to file

  • HA-proxy and Gobetween configs samples

  • Windows executable for cookd and cookctl

  • Python packages

  • Init script and systemd unit file

  • Config file now is optional and it’s possible to configure node with environment variables

13.2.36. v0.0.1

Released: 04.09.2020