[pgpool-general: 6093] Re: pgpool failover from node 1 to node 0: incorrect value for %P in version 3.7.3 ?

Tatsuo Ishii ishii at sraoss.co.jp
Sat May 19 10:50:26 JST 2018


> Hi,
> I have a problem with pgpool 3.7.2 and pgpool 3.7.3, but not with pgpool 3.7.1 so it might be a bug.
> When there is a failover from node 1 to node 0 then the parameter %P (old primary id) which is passed to the failover script is incorrect. It says 0 instead of 1. I encounter the error systematically when I do a first failover from node 0 to node 1, then a recovery of node 0, then a new failover from node 1 to node 0. In this new failover - from node 1 to node 0 - the parameter old_primary_id is not correctly passed.
> I have reverted back to pgpool 3.7.1 and the problem has disappeared.
> My config, for failover_command, is:
> failover_command = '/scripts/failover.sh %d %h %p %D %m %H %M %P %r %R'                                   # Executes this command at failover                                   # Special values:                                   #   %d = node id                                   #   %h = host name                                   #   %p = port number                                   #   %D = database cluster path                                   #   %m = new master node id                                   #   %H = hostname of the new master node                                   #   %M = old master node id                                   #   %P = old primary node id                                   #   %r = new master port number
> and in the log I see that the parameter %P is incorrect with pgpool 3.7.3 and pgpool 3.7.2 but that it is correct with pgpool 3.7.1
> I can provide more logs and configuration if needed
> Kind regards, 
> Pierre 

Thanks for the report. I was able to reproduce the problem. I think
problem with 3.7.2 and 3.7.3 is, they pass node id 0 if current
primary node's status is down. Of course the status is down because
it's the reason why the failover script gets called:-< 3.7.1 does not
check the primary node status. So it correctly passes the failed
primary node id.

I think the fix would be passes the primary node id regardless the
status. Attached one line patch does the trick. At least it worked for
me. So can you please try it out?

Best regards,
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
-------------- next part --------------
A non-text attachment was scrubbed...
Name: failover_bug.diff
Type: text/x-patch
Size: 453 bytes
Desc: not available
URL: <http://www.sraoss.jp/pipermail/pgpool-general/attachments/20180519/d4d33d2c/attachment.bin>

More information about the pgpool-general mailing list