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

Pierre Timmermans ptim007 at yahoo.com
Sat May 19 15:51:00 JST 2018

Hi Tatsuo

Thanks for the prompt response and for the patch ! I am glad you could reproduce it.

I am leaving now for a long week-end (monday is holiday in Belgium) and I am not familiar with patches to do it right now, but I'll definitively try when I am back. 

Have a good week-end

    On Saturday, May 19, 2018, 3:50:28 AM GMT+2, Tatsuo Ishii <ishii at sraoss.co.jp> wrote:  

> 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 --------------
An HTML attachment was scrubbed...
URL: <http://www.sraoss.jp/pipermail/pgpool-general/attachments/20180519/8d05858f/attachment.html>

More information about the pgpool-general mailing list