49.2. Retrollamadas del módulo de archivado #

49.2.1. Retrollamada de inicio
49.2.2. Retrollamada de comprobación
49.2.3. Retrollamada de archivado
49.2.4. Retrollamada de apagado (Shutdown)

Las retrollamadas de archivado definen el comportamiento de archivado real del módulo. El servidor las llamará según sea necesario para procesar cada archivo WAL individual.

49.2.1. Retrollamada de inicio #

La retrollamada startup_cb se llama poco después de que el módulo se carga. Esta retrollamada se puede utilizar para realizar cualquier inicialización adicional requerida. Si el módulo de archivado tiene algún estado, puede usar state->private_data para almacenarlo.

typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);

49.2.2. Retrollamada de comprobación #

La retrollamada check_configured_cb se llama para determinar si el módulo está completamente configurado y listo para aceptar archivos WAL (por ejemplo, sus parámetros de configuración están definidos con valores válidos). Si no se define ningún check_configured_cb, el servidor siempre asume que el módulo está configurado.

typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);

Si se devuelve true, el servidor procederá a archivar el archivo llamando a la retrollamada archive_file_cb. Si se devuelve false, el archivado no procederá, y el archivador emitirá el siguiente mensaje en el registro del servidor:

WARNING:  archive_mode enabled, yet archiving is not configured

En este último caso, el servidor llamará periódicamente a esta función, y el archivado procederá solo cuando devuelva true.

Note

Al devolver false, puede ser útil añadir alguna información adicional al mensaje de advertencia genérico. Para hacer eso, proporciona un mensaje a la macro arch_module_check_errdetail antes de devolver false. Al igual que errdetail(), esta macro acepta una cadena de formato seguida de una lista opcional de argumentos. El resultado se emitirá como la línea DETAIL del mensaje de advertencia.

49.2.3. Retrollamada de archivado #

La retrollamada archive_file_cb se llama para archivar un solo archivo WAL.

typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);

Si se devuelve true, el servidor procede como si el archivo se hubiera archivado con éxito, lo que puede incluir el reciclaje o la eliminación del archivo WAL original. Si se devuelve false o se produce un error, el servidor conservará el archivo WAL original e intentará el archivado nuevamente más tarde. file contendrá solo el nombre del archivo WAL a archivar, mientras que path contiene la ruta completa del archivo WAL (incluyendo el nombre del archivo).

Note

La retrollamada archive_file_cb se llama en un contexto de memoria de corta duración que se restablecerá entre invocaciones. Si necesitas un almacenamiento de mayor duración, crea un contexto de memoria en la retrollamada startup_cb del módulo.

49.2.4. Retrollamada de apagado (Shutdown) #

La retrollamada shutdown_cb se llama cuando el proceso archivador finaliza (por ejemplo, después de un error) o cuando el valor de archive_library cambia. Si no se define ningún shutdown_cb, no se toma ninguna acción especial en estas situaciones. Si el módulo de archivado tiene algún estado, esta retrollamada debe liberarlo para evitar fugas (leaks).

typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);