Версия:

Вложенный модуль box.ctl

Вложенный модуль box.ctl

Вложенный модуль box.ctl включает в себя две функции: wait_ro (дождаться режима только для чтения) и wait_rw (дождаться режима чтения и записи). Эти функции используются во время инициализации сервера.

Для box_once() есть особое предназначение. Например, при инициализаци реплика может вызвать функцию box.once(), пока сервер все еще находится в режиме только для чтения, и не сможет применить изменения однократно до окончательной инициализации реплики. Это может привести к конфликту между мастером и репликой, если мастер находится в режиме чтения и записи, а реплика доступна только для чтения. Ожидание условия «read only mode = false» (режим только для чтения отключен) решает эту проблему.

Чтобы проверить режим функции — только для чтения или чтение и запись, используйте box.info.ro.

box.ctl.wait_ro([timeout])

Дождаться, пока не будет выполнено box.info.ro.

Параметры:
  • timeout (number) – максимальное количество секунд ожидания
Возврат:

нулевое значение nil или ошибка (ошибки могут возникать из-за превышения времени ожидания или прерывания работы файбера)

Пример:

tarantool> box.info().ro
 ---
 - false
 ...

 tarantool> n = box.ctl.wait_ro(0.1)
 ---
 - error: timed out
 ...
box.ctl.wait_rw([timeout])

Дождаться, пока не перестанет соблюдаться box.info.ro.

Параметры:
  • timeout (number) – максимальное количество секунд ожидания
Возврат:

нулевое значение nil или ошибка (ошибки могут возникать из-за превышения времени ожидания или прерывания работы файбера)

Пример:

tarantool> box.ctl.wait_rw(0.1)
        ---
        ...