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

Системные события

Начиная с 2.10.0.

Предопределенные события имеют специальную схему именования – их имена всегда начинаются с зарезервированного префикса box.. Это означает, что создавать новые события с этим префиксом нельзя.

Система обрабатывает следующие события:

  • box.id
  • box.status
  • box.election
  • box.schema
  • box.shutdown В ответ на каждое событие сервер отправляет определенные поля IPROTO.

События доступны с самого начала как non-MP_NIL. Если наблюдатель подписывается на системное событие до его первой трансляции, он получает пустую таблицу в качестве значения события.

Событие генерируется при изменении любого из значений, перечисленных в событии. Например, ниже приведены параметры события box.idid, instance_uuid и replicaset_uuid. Предположим, значение ìd (box.info.id) изменилось. Это инициирует событие box.info, которое сообщает, что значение box.info.id изменилось, тогда как box.info.uuid и box.info.cluster.uuid остаются прежними.

box.id

Содержит идентификационные данные экземпляра. Значения изменяются редко.

  • id: числовой идентификатор экземпляра неизвестен до регистрации. Для анонимных реплик значение равно 0 до их официальной регистрации.
  • instance_uuid: UUID экземпляра никогда не изменяется после первого вызова box.cfg. Значение неизвестно до вызова box.cfg.
  • replicaset_uuid: значение неизвестно, пока экземпляр не присоединится к набору реплик или не выполнит начальную загрузку нового.
-- box.id value{MP_STR “id”: MP_UINT; box.info.id,MP_STR “instance_uuid”: MP_UUID; box.info.uuid,MP_STR “replicaset_uuid”: MP_UUID box.info.cluster.uuid,}

box.status

Содержит общую информацию о статусе экземпляра.

{MP_STR “is_ro”: MP_BOOL box.info.ro,MP_STR “is_ro_cfg”: MP_BOOL box.cfg.read_only,MP_STR “status”: MP_STR box.info.status,}

box.election

Содержит поля box.info.election, необходимые для определения актуального лидера, доступного для записи.

  • term: показывает текущий срок выборов.
  • role: указывает состояние выборов узла — leader, follower или candidate.
  • is_ro: указывает режим только для чтения или статус orphan.
  • leader: показывает идентификатор узла-лидера в текущем сроке.
{MP_STR “term”: MP_UINT box.info.election.term,MP_STR “role”: MP_STR box.info.election.state,MP_STR “is_ro”: MP_BOOL box.info.ro,MP_STR “leader”: MP_UINT box.info.election.leader,}

box.schema

Содержит данные, связанные со схемой.

  • version: показывает версию схемы.
{MP_STR “version”: MP_UINT schema_version,}

box.shutdown

Содержит логическое значение, указывающее, активен ли запрос на завершение работы.

Событие генерируется, когда сервер получает запрос на завершение работы (команда os.exit() или сигнал SIGTERM).

Событие box.shutdown применяется для протокола корректного завершения работы. Эта возможность доступна начиная с 2.10.0. Протокол предназначен для использования с коннекторами, чтобы уведомить клиента о предстоящем завершении работы сервера и закрыть активные соединения без прерванных запросов. Подробнее см. в разделе протокол корректного завершения работы.

Пример использования

local conn = net.box.connect(URI)local log = require('log')-- Subscribe to updates of key 'box.id'local w = conn:watch('box.id', function(key, value)    assert(key == 'box.id')    log.info("The box.id value is '%s'", value)end)

Чтобы отменить регистрацию наблюдателя, когда он больше не нужен, используйте следующую команду:

w:unregister()