48.2. Обратные вызовы модуля архива#
48.2. Обратные вызовы модуля архива #
Колбэки архива определяют фактическое поведение архивации модуля. Сервер будет вызывать их по мере необходимости для обработки каждого отдельного файла журнала предзаписи.
48.2.1. Запуск обратного вызова #
The startup_cb
callback вызывается вскоре после
загрузки модуля. Этот callback можно использовать для выполнения любой дополнительной
инициализации, если это необходимо. Если архивный модуль имеет какое-либо состояние, он может использовать
state->private_data
для его хранения.
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
48.2.2. Проверить обратный вызов #
Обратный вызов check_configured_cb
вызывается для определения, полностью ли настроен модуль и готов ли он принимать файлы WAL (например, его параметры конфигурации установлены на допустимые значения). Если не определен обратный вызов check_configured_cb
, сервер всегда считает, что модуль настроен.
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
Если возвращается значение true
, сервер будет продолжать архивирование файла, вызывая обратный вызов archive_file_cb
. Если возвращается значение false
, архивирование не будет продолжаться, и архиватор выведет следующее сообщение в журнал сервера:
WARNING: archive_mode enabled, yet archiving is not configured
В последнем случае сервер периодически будет вызывать эту функцию, и
архивирование будет выполняться только тогда, когда она вернет true
.
48.2.3. Архивный обратный вызов #
Функция обратного вызова archive_file_cb
вызывается для архивации
отдельного файла журнала предзаписи.
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
Если возвращается значение true
, сервер продолжает работу, как если бы файл был успешно архивирован, что может включать его переработку или удаление. Если возвращается значение false
, сервер сохраняет оригинальный файл журнала предзаписи и повторно пытается выполнить архивирование позже. file
будет содержать только имя файла журнала предзаписи для архивирования, а path
содержит полный путь к файлу WAL (включая имя файла).
48.2.4. Shutdown Callback #
shutdown_cb
вызывается, когда процесс архиватора
завершает работу (например, после ошибки) или изменяется значение
archive_library. Если
shutdown_cb
не определен, никаких специальных действий
в этих ситуациях не предпринимается. Если у модуля архивации есть какое-либо состояние, этот обратный вызов должен освободить его, чтобы избежать утечек.
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);