View Issue Details

IDProjectCategoryView StatusLast Update
0000371Pgpool-IIBugpublic2017-12-19 10:08
Reporterm.oyamata Assigned Tot-ishii  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionopen 
Product Version3.7.0 
Target Version3.7.1 
Summary0000371: specify per node health check parameters setting in pgpool-II 3.7.0 does not work
DescriptionThe health check related parameters set for each node are not reflected in the health check operation.
Steps To ReproduceEnvironment information

PostgreSQL Version: 10.0
PostgreSQL node : 2(Streaming Replication)
pgpool-II Version: 3.7.0
pgpool-II mode : master slave

PostgreSQL and pgpool-II are all running on the same server.(Red Hat Enterprise Linux Server release 7.3 (Maipo))


1. Set health_check_max_retries of node 1 to 100
postgres=# pgpool show health_check;
           item | value | description
---------------------------+----------+------------------------------------------------------------------------------------------------------
 health_check_period | 1 | Time interval in seconds between the health checks.
 health_check_timeout | 20 | Backend node health check timeout value in seconds.
 health_check_user | postgres | User name for PostgreSQL backend health check.
 health_check_password | ***** | Password for PostgreSQL backend health check database user.
 health_check_database | postgres | The database name to be used to perform PostgreSQL backend health check.
 health_check_max_retries | 5 | The maximum number of times to retry a failed health check before giving up and initiating failover.
 health_check_retry_delay | 1 | The amount of time in seconds to wait between failed health check retries.
 connect_timeout | 10000 | Timeout in milliseconds before giving up connecting to backend.
 health_check_period0 | 1 | Time interval in seconds between the health checks.
 health_check_timeout0 | 20 | Backend node health check timeout value in seconds.
 health_check_user0 | postgres | User name for PostgreSQL backend health check.
 health_check_password0 | ***** | Password for PostgreSQL backend health check database user.
 health_check_database0 | postgres | The database name to be used to perform PostgreSQL backend health check.
 health_check_max_retries0 | 5 | The maximum number of times to retry a failed health check before giving up and initiating failover.
 health_check_retry_delay0 | 1 | The amount of time in seconds to wait between failed health check retries.
 connect_timeout0 | 10000 | Timeout in milliseconds before giving up connecting to backend.
 health_check_period1 | 1 | Time interval in seconds between the health checks.
 health_check_timeout1 | 20 | Backend node health check timeout value in seconds.
 health_check_user1 | postgres | User name for PostgreSQL backend health check.
 health_check_password1 | ***** | Password for PostgreSQL backend health check database user.
 health_check_database1 | postgres | The database name to be used to perform PostgreSQL backend health check.
 health_check_max_retries1 | 100 | The maximum number of times to retry a failed health check before giving up and initiating failover.
 health_check_retry_delay1 | 1 | The amount of time in seconds to wait between failed health check retries.
 connect_timeout1 | 10000 | Timeout in milliseconds before giving up connecting to backend.
(24 rows)

2. Stop node 1
$ pg_ctl stop -m i -D data2
waiting for server to shut down.... done
server stopped

3. pgpool-II logfile
Health check to node 1 is executed only 5 times.

2017-12-17 23:11:35: pid 9266: LOG: pgpool-II successfully started. version 3.7.0 (amefuriboshi)
2017-12-17 23:12:30: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:30: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:30: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:30: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:30: pid 9303: LOG: health check retrying on DB node: 1 (round:1)
2017-12-17 23:12:31: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:31: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:31: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:31: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:31: pid 9303: LOG: health check retrying on DB node: 1 (round:2)
2017-12-17 23:12:32: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:32: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:32: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:32: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:32: pid 9303: LOG: health check retrying on DB node: 1 (round:3)
2017-12-17 23:12:33: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:33: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:33: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:33: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:33: pid 9303: LOG: health check retrying on DB node: 1 (round:4)
2017-12-17 23:12:34: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:34: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:34: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:34: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:34: pid 9303: LOG: health check retrying on DB node: 1 (round:5)
2017-12-17 23:12:35: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:35: pid 9303: LOG: failed to connect to PostgreSQL server on "localhost:5411", getsockopt() detected error "Connection refused"
2017-12-17 23:12:35: pid 9303: ERROR: failed to make persistent db connection
2017-12-17 23:12:35: pid 9303: DETAIL: connection to host:"localhost:5411" failed
2017-12-17 23:12:35: pid 9303: LOG: health check failed on node 1 (timeout:0)
2017-12-17 23:12:35: pid 9303: LOG: received degenerate backend request for node_id: 1 from pid [9303]
2017-12-17 23:12:35: pid 9266: LOG: Pgpool-II parent process has received failover request
2017-12-17 23:12:35: pid 9266: LOG: starting degeneration. shutdown host localhost(5411)
2017-12-17 23:12:35: pid 9266: LOG: Do not restart children because we are switching over node id 1 host: localhost port: 5411 and we are in streaming replication mode
2017-12-17 23:12:35: pid 9266: LOG: execute command: echo test
test

TagsNo tags attached.

Activities

m.oyamata

2017-12-18 09:41

reporter  

pgpool_3.7.log (5,095 bytes)
pgpool.conf (35,636 bytes)

t-ishii

2017-12-19 08:36

developer   ~0001870

It seems Pgpool-II 3.7's per node health check parameter is broken. Can you please try attached patch?
health_check.diff (4,628 bytes)   
health_check.diff (4,628 bytes)   

m.oyamata

2017-12-19 10:03

reporter   ~0001871

By applying the patch provided, the problem was solved.
Thank you very much!!
pgpool_3.7-2.log (74,457 bytes)

t-ishii

2017-12-19 10:08

developer   ~0001872

Great! We are going to release Pgpool-II 3.7.1 with the fix on January 9th, 2018.

Issue History

Date Modified Username Field Change
2017-12-18 09:41 m.oyamata New Issue
2017-12-18 09:41 m.oyamata File Added: pgpool_3.7.log
2017-12-18 09:41 m.oyamata File Added: pgpool.conf
2017-12-19 08:34 t-ishii Assigned To => t-ishii
2017-12-19 08:34 t-ishii Status new => feedback
2017-12-19 08:34 t-ishii Target Version => 3.7.1
2017-12-19 08:36 t-ishii File Added: health_check.diff
2017-12-19 08:36 t-ishii Note Added: 0001870
2017-12-19 10:03 m.oyamata File Added: pgpool_3.7-2.log
2017-12-19 10:03 m.oyamata Note Added: 0001871
2017-12-19 10:03 m.oyamata Status feedback => assigned
2017-12-19 10:08 t-ishii Note Added: 0001872
2017-12-19 10:08 t-ishii Status assigned => resolved