Skip to content

Commit

Permalink
Fix sporadic health check failures due to authentication failure.
Browse files Browse the repository at this point in the history
It is reported that health check process fails due to authentication
failures.
[pgpool-general: 9236] Sporadic health check failures due to authentication failure
https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html

When health_check_password is empty string, health check process looks
for the password from pool_passwd file. Problem is, the file
descriptor for the file is inherited from parent pgpool process. This
means that pgpool main and health check process (possibly multiple
process) share the same descriptor, which causes various problem
including the issue reported here. To fix the problem, re-open the
file when health check process starts so that each health check
process owns its own file descriptor.

Note that pgpool child process (responsible for frontend sessions)
already re-opens the file descriptor and they are related to the
issue.

Problem reported and analyzed by Emond Papegaaij.
Backpatch-through: v4.1
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html
  • Loading branch information
tatsuo-ishii committed Oct 26, 2024
1 parent 2acbbf4 commit a769dc7
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/main/health_check.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,14 @@ do_health_check_child(int *node_id)
/* Initialize per process context */
pool_init_process_context();

/*
* Open pool_passwd.
*/
if (strcmp("", pool_config->pool_passwd))
{
pool_reopen_passwd_file();
}

if (sigsetjmp(local_sigjmp_buf, 1) != 0)
{
pool_signal(SIGALRM, SIG_IGN);
Expand Down

0 comments on commit a769dc7

Please sign in to comment.