ham_action_restart()

Добавить действие перезапуска к условию

Прототип:

#include <ha/ham.h>
ham_action_t * ham_action_restart( ham_condition_t *chdl,
const char *aname,
const char *path,
unsigned flags );

Аргументы:

сhdl
Дескриптор условия в HAM. Дескриптор (сhdl) может быть получен из:
aname
Действие HAM.
path
Параметр path должен содержать ПОЛНЫЙ путь path к исполняемому файлу вместе со всеми передаваемыми ему параметрами. Если либо имя пути, либо аргументы содержат пробелы, которые необходимо передать вызову spawn(), их необходимо заключить в кавычки. Когда подкомпоненты в аргументах path заключены в кавычки, используйте любой из следующих методов:
\'path with space\'
или
\"path with space\",
также допустимо:
"\'path with space\' arg1 arg2 \"arg3 with space\"".
Это будет рассматриваться как
"path with space" -> path
arg1 = arg1
arg2 = arg2
arg3 = "arg3 with space".
flags
Флаги:
HREARMAFTERRESTART
Указывает, что действие должно быть автоматически перезапущено после перезапуска объекта, которому оно принадлежит. По умолчанию этот флаг отключен — действия автоматически удаляются при перезапуске объекта. Обратите внимание, что если условие, которому принадлежит это действие, удаляется после перезапуска, это действие также будет удалено, независимо от значения этого флага.
HACTIONBREAKONFAIL
Указывает, что если это действие завершится с ошибкой, и оно является частью списка действий, ни одно из действий, следующих за этим в списке, не будет выполнено.
HACTIONKEEPONFAIL
Указывает, что действие будет сохранено даже в случае сбоя. Поведение по умолчанию — удалить неудавшиеся действия. Тем не менее, если условие, с которым связано это действие, не сохраняется, действие будет автоматически удалено.

Библиотека:

libham

Описание:

Функция ham_action_restart() используется для добавления действия (aname) к заданному условию. При добавлении действие перезапустит "умершую" программу.


Note: Действия по перезапуску могут быть связаны только с CONDDEATH. Также обратите внимание, что может существовать только одно действие перезапуска для всех CONDDEATH в объекте.

Командная строка, в свою очередь, передается HAM в команду spawn() для создания нового процесса, который будет выполнять команду.

Действие выполняется, когда срабатывает соответствующее условие.

Обратите внимание, что данное действие также запускает условие перезапуска в объекте.

Пользователи могут указать, что будет сделано, если действие не будет совершено. Такие действия добавляются в список. Для каждого несовершенного действия будет выполнен соответствующий список действий. Некоторые действия (например, ham_action_log() и ham_action_heartbeat_healthy()) гарантированно совершаются. Для получения дополнительной информации обратитесь к соответствующему разделу в Использование менеджера высокой готовности для вызовов ham_action_fail_*().

Возвращаемое значение:

Адрес
Дескриптор действия для условия.
NULL
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Не удалось подключиться к HAM.
EINVAL
Имя aname некорректно (например, содержит символ /) или имеет значение NULL. Не удалось подключиться к HAM. Это происходит, когда процесс, открывший соединение (используя ham_connect()), и процесс, вызывающий ham_action_execute(), не совпадают.
ENAMETOOLONG
Указанное имя (в aname) слишком длинное, т.е. оно превышает _POSIX_PATH_MAX (определено в <limits.h>). Обратите внимание, что общая длина имени объекта/условия/действия также ограничена _POSIX_PATH_MAX.
ENOENT
Отсутствует объект или условие с заданным дескриптором (chdl).
ENOMEM
Недостаточно памяти для создания нового дескриптора.

В дополнение к вышеуказанным ошибкам HAM возвращает любую ошибку, с которой он сталкивается при обслуживании данного запроса.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

ham_action_execute(), ham_action_notify_pulse(), ham_action_notify_signal(), ham_action_remove(), ham_action_waitfor(), ham_condition(), ham_condition_handle()




Предыдущий раздел: Менеджер высокой готовности (HAM)