[pgpool-committers: 3532] patch of wd_lifecheck.c for stabilization
atsushi mitani
at.mitani at gmail.com
Fri Sep 30 11:22:26 JST 2016
Hi all,
I created a patch file of wd_lifecheck.c for stabilizing.
When I use pgpool-II 3.5.4 on the vm server, life check often failed.
Cause the vm server has fast clock CPU's and slow network periphelal.
In this case the watchdog process had often failed to connect with other
nodes.
Therefore, I add sleep() instead of usleep() and retry routine in network
connection.
In my case, the watchdog process was stabilized by this fix.
I'd like to merge this patch when you confirm that there is no problem.
Regards,
--- src/watchdog/wd_lifecheck.c.org 2016-09-30 10:38:42.647168825 +0900
+++ src/watchdog/wd_lifecheck.c 2016-09-30 10:51:06.402749336 +0900
@@ -804,7 +804,7 @@ check_pgpool_status_by_query(void)
rc = pthread_join(thread[i], (void **)&result);
if ((rc != 0) && (errno == EINTR))
{
- usleep(100);
+ sleep(1);
continue;
}
@@ -953,11 +953,19 @@ wd_check_heartbeat(LifeCheckNode* node)
static int
wd_ping_pgpool(LifeCheckNode* node)
{
- PGconn * conn;
+ PGconn * conn = NULL;
+ int cnt = 0;
- conn = create_conn(node->hostName, node->pgpoolPort);
- if (conn == NULL)
- return WD_NG;
+ while (conn == NULL)
+ {
+ conn = create_conn(node->hostName, node->pgpoolPort);
+ if ((conn == NULL) && (cnt > pool_config->wd_life_point))
+ {
+ return WD_NG;
+ }
+ sleep(1);
+ cnt ++;
+ }
return ping_pgpool(conn);
}
--
At.Mitani
-------------- next part --------------
HTML����������������������������...
URL: <http://www.sraoss.jp/pipermail/pgpool-committers/attachments/20160930/52ee5fa9/attachment.html>
More information about the pgpool-committers
mailing list