Системные события
Начиная с 2.10.0.
Предопределенные события имеют специальную схему именования – их имена
всегда начинаются с зарезервированного префикса box.. Это означает,
что создавать новые события с этим префиксом нельзя.
Система обрабатывает следующие события:
box.idbox.statusbox.electionbox.schema
box.shutdownВ ответ на каждое событие сервер отправляет определенные поляIPROTO.
События доступны с самого начала как non-MP_NIL. Если наблюдатель подписывается на системное событие до его первой трансляции, он получает пустую таблицу в качестве значения события.
Событие генерируется при изменении любого из значений, перечисленных в
событии. Например, ниже приведены параметры события box.id – id,
instance_uuid и replicaset_uuid. Предположим, значение ìd
(box.info.id) изменилось. Это инициирует событие box.info, которое
сообщает, что значение box.info.id изменилось, тогда как
box.info.uuid и box.info.cluster.uuid остаются прежними.
Содержит идентификационные данные экземпляра. Значения изменяются редко.
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,}
Содержит общую информацию о статусе экземпляра.
is_ro: указывает режим только для чтения или статусorphan.is_ro_cfg: указывает режим read_only для экземпляра.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.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,}
Содержит данные, связанные со схемой.
version: показывает версию схемы.
{MP_STR “version”: MP_UINT schema_version,}
Содержит логическое значение, указывающее, активен ли запрос на завершение работы.
Событие генерируется, когда сервер получает запрос на завершение работы
(команда 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()