box.ctl.on_recovery_state()
Начиная с: 2.11.0
Создает триггер, выполняемый на разных этапах
восстановления узла или начальной
настройки. Обратите внимание, что триггер box.ctl.on_recovery_state
нужно установить до первоначального вызова box.cfg.
Параметры:
trigger-function(function) — функция-триггер
Возвращает
nil или указатель на функцию
Зарегистрированная функция-триггер выполняется на каждом из поддерживаемых состояний восстановления и получает имя состояния в качестве параметра:
snapshot_recovered— узел восстановил файлы снимков.wal_recovered— узел восстановил файлы WAL.indexes_built— узел построил вторичные индексы для memtx-спейсов. Этот этап может наступить до восстановления фактических данных. Это означает, что индексы становятся доступными сразу после восстановления первого кортежа.synced— узел синхронизировался с достаточным количеством удаленных узлов. Это означает, что узел переходит из состояния orphan вrunning.
Все эти состояния проходят во время первоначального вызова box.cfg при
восстановлении из файлов снимков и WAL. Обратите внимание, что состояние
synced может быть достигнуто после завершения первоначального вызова
box.cfg. Например, если параметр
replication_sync_timeout
установлен в значение 0, узел завершает box.cfg, не достигнув
synced, и остается orphan. Как только узел синхронизируется с
достаточным количеством удаленных узлов, достигается состояние synced.
Пример:
В примере ниже показано, как записывать в журнал указанное сообщение при достижении каждого состояния.
local log = require('log')local log_recovery_state = function(state)log.info(state .. ' state reached')endbox.ctl.on_recovery_state(log_recovery_state)