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