Hi,

We started working with PG POOL II and for the last week we stumbled on the following issues:
I have the following configuration:

2 servers referred to herein as LOCAL and REMOTE running CentOS.
PGPOOL running on LOCAL
PGPOOL VERSION: pgpool-II-2.2.2

We tested the following scenarios:

1. If Istart PGPOOL II on the LOCAL host, and the PostgreSQL server on the REMOTE was not running, Invoking a PSQL client on the LOCAL (over PGPOOL port 9999) - the PSQL aborts. Q: We read in the documentation that PGPOOL closes all sessions (kills children) and then the client needs to reopen the sessiom:
(a) Why
(b) Is there a way just to shut off the connection to the REMOTE and continue working against the local DB

2. We set all the health check parameters (timeout, interval and user) and then we STOPPED (using "kill -STOP") all the postgres processes on the REMOTE, The PGPOOL (on the LOCAL) does not identify that, and continues running. By using "strace" on the PGPOOL parent process we could see that the READ from REMOTE fails with ERESTATSYS but the WRITE is successful and therefor the system does not cut off the failed REMOTE. When we changed the code in such a way that it will NOT ignore the READ failure - all children were killed (both LOCAL and REMOTE) Q: Does the failure to identify the connectivity issue evident by the READ is a PGPOOL BUG or there is a reason for that behavior?

Below is the diff showing the change we introduced to the health check (in main.c):

[r...@lx tmp]# diff pgpool-II-2.2.2.new/main.c pgpool-II-2.2.2/main.c
1438,1445c1438
< if (read(fd, &kind, 1) < 0) {
< pool_error("health check failed during read. host %s at port %d is down. reason: %s. Perhaps wrong health check user?",
< BACKEND_INFO(i).backend_hostname,
< BACKEND_INFO(i).backend_port,
< strerror(errno));
< close(fd);
< return i+1;
< }
---
read(fd, &kind, 1);

Thanks
VJ
_______________________________________________
Pgpool-general mailing list
[email protected]
http://pgfoundry.org/mailman/listinfo/pgpool-general

Reply via email to