Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

box.ctl.on_recovery_state()

on_recovery_state(trigger-function)

Начиная с: 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)