Hello, We are currently not able to specify the password of the health check user, which is needed at least for streaming replication lag. So I added the possibility to specify it in the configuration file, in the attached patch.
Also, I find the error message in check_replication_time_lag()
(pool_worker_child.c) not friendly :
pool_error("check_replication_time_lag: DB node is valid but no
persistent connection");
What about sending this error message to the debug level and adding a
second message on the error level? Fro example:
pool_error("check_replication_time_lag: could not connect to DB node %d,
check health check configuration", i);
Regards,
--
Nicolas Thauvin
DBA
http://www.dalibo.com
Index: pool_config.h
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pool_config.h,v
retrieving revision 1.14
diff -u -p -r1.14 pool_config.h
--- pool_config.h 29 Jun 2011 02:44:12 -0000 1.14
+++ pool_config.h 6 Jul 2011 08:29:42 -0000
@@ -113,6 +113,7 @@ typedef struct {
int health_check_timeout; /* health check timeout */
int health_check_period; /* health check period */
char *health_check_user; /* PostgreSQL user name for health check */
+ char *health_check_password; /* password for health check username */
char *failover_command; /* execute command when failover happens */
char *follow_master_command; /* execute command when failover is ended */
char *failback_command; /* execute command when failback happens */
Index: pool_config.l
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pool_config.l,v
retrieving revision 1.57
diff -u -p -r1.57 pool_config.l
--- pool_config.l 29 Jun 2011 02:44:12 -0000 1.57
+++ pool_config.l 6 Jul 2011 08:29:43 -0000
@@ -178,6 +178,7 @@ int pool_init_config(void)
pool_config->health_check_timeout = 20;
pool_config->health_check_period = 0;
pool_config->health_check_user = "nobody";
+ pool_config->health_check_password = "";
pool_config->failover_command = "";
pool_config->follow_master_command = "";
pool_config->failback_command = "";
@@ -1065,6 +1066,26 @@ int pool_get_config(char *confpath, POOL
pool_config->health_check_user = str;
}
+ else if (!strcmp(key, "health_check_password") &&
+ CHECK_CONTEXT(INIT_CONFIG|RELOAD_CONFIG, context))
+ {
+ char *str;
+
+ if (token != POOL_STRING && token != POOL_UNQUOTED_STRING && token != POOL_KEY)
+ {
+ PARSE_ERROR();
+ fclose(fd);
+ return(-1);
+ }
+ str = extract_string(yytext, token);
+ if (str == NULL)
+ {
+ fclose(fd);
+ return(-1);
+ }
+ pool_config->health_check_password = str;
+ }
+
else if (!strcmp(key, "failover_command") &&
CHECK_CONTEXT(INIT_CONFIG|RELOAD_CONFIG, context))
{
Index: pool_worker_child.c
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pool_worker_child.c,v
retrieving revision 1.9
diff -u -p -r1.9 pool_worker_child.c
--- pool_worker_child.c 23 May 2011 19:44:00 -0000 1.9
+++ pool_worker_child.c 6 Jul 2011 08:29:43 -0000
@@ -156,7 +156,7 @@ static void establish_persistent_connect
bkinfo->backend_port,
"postgres",
pool_config->health_check_user,
- "");
+ pool_config->health_check_password);
if (s)
slots[i] = s;
else
Index: pgpool.conf.sample
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample,v
retrieving revision 1.46
diff -u -p -r1.46 pgpool.conf.sample
--- pgpool.conf.sample 1 Jul 2011 10:47:14 -0000 1.46
+++ pgpool.conf.sample 6 Jul 2011 08:29:43 -0000
@@ -254,6 +254,7 @@ health_check_period = 0 # Hea
health_check_timeout = 20 # Health check timeout
# 0 means no timeout
health_check_user = 'nobody' # Health check user
+health_check_password = '' # Password for health check user
# - Special commands -
Index: pgpool.conf.sample-master-slave
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample-master-slave,v
retrieving revision 1.20
diff -u -p -r1.20 pgpool.conf.sample-master-slave
--- pgpool.conf.sample-master-slave 1 Jul 2011 10:47:14 -0000 1.20
+++ pgpool.conf.sample-master-slave 6 Jul 2011 08:29:43 -0000
@@ -254,6 +254,7 @@ health_check_period = 0 # Hea
health_check_timeout = 20 # Health check timeout
# 0 means no timeout
health_check_user = 'nobody' # Health check user
+health_check_password = '' # Password for health check user
# - Special commands -
Index: pgpool.conf.sample-replication
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample-replication,v
retrieving revision 1.18
diff -u -p -r1.18 pgpool.conf.sample-replication
--- pgpool.conf.sample-replication 1 Jul 2011 10:47:14 -0000 1.18
+++ pgpool.conf.sample-replication 6 Jul 2011 08:29:43 -0000
@@ -254,6 +254,7 @@ health_check_period = 0 # Hea
health_check_timeout = 20 # Health check timeout
# 0 means no timeout
health_check_user = 'nobody' # Health check user
+health_check_password = '' # Password for health check user
# - Special commands -
Index: pgpool.conf.sample-stream
===================================================================
RCS file: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample-stream,v
retrieving revision 1.13
diff -u -p -r1.13 pgpool.conf.sample-stream
--- pgpool.conf.sample-stream 1 Jul 2011 10:47:14 -0000 1.13
+++ pgpool.conf.sample-stream 6 Jul 2011 08:29:43 -0000
@@ -255,6 +255,7 @@ health_check_period = 0 # Hea
health_check_timeout = 20 # Health check timeout
# 0 means no timeout
health_check_user = 'nobody' # Health check user
+health_check_password = '' # Password for health check user
# - Special commands -
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Pgpool-hackers mailing list [email protected] http://pgfoundry.org/mailman/listinfo/pgpool-hackers
