[pgpool-hackers: 4125] Re: Failover on starting up

Tatsuo Ishii ishii at sraoss.co.jp
Fri Feb 11 08:24:34 JST 2022


Hi Anirudh,

Oh, I see. Yes, your understanding is correct. Our policy is releasing
RPM at the same time when a release is out (the next release will be
next week: February 17th, 2022).

> Dear Tatsuo
> 
> I am using the built RPMs from https://www.pgpool.net/yum/rpms/4.2/. If my understanding is correct, these latest fixes won’t be available here as a RPM until a new version is released. So, I was just asking if you have a timeline for that.
> 
> Thank you
> 
> Anirudh
> On 10 Feb 2022, 3:02 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> > Hello Tatsuo
>> >
>> > Thank you so much for such prompt fixes.
>> >
>> > Since I am actually running the packaged version (4.2.2) of pgpool in my setup, I would like to know if you already have a timeline for releasing these new updates in a new packaged version?
>>
>> You are using debian/Ubuntu package for Pgpool-II? Unfortunately I am
>> not in charge of creating/releasing them and I cannot answer the
>> question.
>>
>> > That way I can wait for some time and upgrade to the latest packaged version instead of building from source.
>> > Thank you
>> >
>> > Anirudh
>> > On 6 Feb 2022, 12:33 PM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> > > I have found multiple issues with Pgpool-II in your scenario
>> > > (i.e. primary PostgreSQL is not up when pgpool starts).
>> > >
>> > > 1) I assume your failover.sh is based on the script coming with
>> > > Pgpool-II. The script does not promote standby node if old primary
>> > > node (%P) is -1. You need to fix the script.
>> > >
>> > > Change this line:
>> > >
>> > > if [ $FAILED_NODE_ID -ne $OLD_PRIMARY_NODE_ID ]; then
>> > >
>> > > to:
>> > >
>> > > if [ $OLD_PRIMARY_NODE_ID != "-1" -a $FAILED_NODE_ID -ne $OLD_PRIMARY_NODE_ID ]; then
>> > >
>> > >
>> > > 2) Even if #1 is fixed, Pgpool-II has a bug: after failover.sh gets
>> > > executed (thus one of standby node has been promoted), the new primary
>> > > node is not detected by Pgpool-II.
>> > >
>> > > 3) After failover is done, follow primary command is executed (if
>> > > set). Pgpool-II fails to execute the command in the scenario.
>> > >
>> > > I have already pushed the fix for #2 and #3 for all supported
>> > > branches. For example the commit for 4.3 is here:
>> > >
>> > > https://git.postgresql.org/gitweb/?p=pgpool2.git;a=blobdiff;f=src/main/pgpool_main.c;h=13049e1f9b4520e709ab0cdcea6ed29a8a2faef2;hp=80a25d00f20f9ef0a893e89f1b824fa1fc3db225;hb=5028a50d718944a6a1d19f8fa984b4c30d8f7dae;hpb=8e5e49426aeb89cdf2bd5c18928261ad2311e5b4
>> > >
>> > > > I have looked into pgpool.conf. You need to set other than 0 to
>> > > > search_primary_node_timeout. pgpool will not start up until
>> > > > search_primary_node_timeout is expired.
>> > > >
>> > > > > I have attached both, logs and conf file.
>> > > > > On 6 Feb 2022, 2:46 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> > > > > > Have you enabled health check?
>> > > > > > Can you share pgpool.conf?
>> > > > > >
>> > > > > > > But that’s the issue - pgpool didn’t perform a failover.
>> > > > > > >
>> > > > > > > It just said this and then gave up:
>> > > > > > > 2022-02-04 16:48:53: pid 9: LOG: ignoring the failover request, since we are still starting up
>> > > > > > > On 6 Feb 2022, 2:32 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> > > > > > > > But after starting up pgpool will detect that the primary went down by
>> > > > > > > > health check and perform failover anyway, no?
>> > > > > > > >
>> > > > > > > > > Thank you Tatsuo for your reply but can’t pgpool setup the other resources regardless of the primary being up and then perform the failover?
>> > > > > > > > >
>> > > > > > > > > I need this behaviour because I cannot pgpool in cluster mode due to infrastructure limitations.
>> > > > > > > > >
>> > > > > > > > > Cheers
>> > > > > > > > >
>> > > > > > > > > Anirudh
>> > > > > > > > > On 6 Feb 2022, 1:51 AM +0100, Tatsuo Ishii <ishii at sraoss.co.jp>, wrote:
>> > > > > > > > > > > Hello
>> > > > > > > > > > >
>> > > > > > > > > > > I have a setup with 1 pgpool and 2 postgresql primary-replica nodes.
>> > > > > > > > > > >
>> > > > > > > > > > > I am testing a certain scenario - what if the pgpool goes down, then the primary goes down and then the pgpool comes back up.
>> > > > > > > > > > >
>> > > > > > > > > > > I was expecting that pgpool would perform a failover after it comes back up but instead it says this:
>> > > > > > > > > > > 2022-02-04 16:48:53: pid 9: LOG: Pgpool-II parent process has received failover request
>> > > > > > > > > > > 2022-02-04 16:48:53: pid 9: LOG: ignoring the failover request, since we are still starting up
>> > > > > > > > > > >
>> > > > > > > > > > > So my question is, is there a parameter or some way that we can tell pgpool to perform a failover if the primary is down while pgpool is starting up?
>> > > > > > > > > > >
>> > > > > > > > > > > I tried looking at the code but according to https://github.com/pgpool/pgpool2/blob/master/src/main/pgpool_main.c#L1329, I don¢t see a parameter other than processState.
>> > > > > > > > > > >
>> > > > > > > > > > > Is there a logical reason why pgpool cannot/won't perform a failover during startup?
>> > > > > > > > > >
>> > > > > > > > > > Because pgpool needs to setup various resouses including shared memory
>> > > > > > > > > > and others for managing failover.
>> > > > > > > > > >
>> > > > > > > > > > Best reagards,
>> > > > > > > > > > --
>> > > > > > > > > > Tatsuo Ishii
>> > > > > > > > > > SRA OSS, Inc. Japan
>> > > > > > > > > > English: http://www.sraoss.co.jp/index_en.php
>> > > > > > > > > > Japanese:http://www.sraoss.co.jp
>> > > > _______________________________________________
>> > > > pgpool-hackers mailing list
>> > > > pgpool-hackers at pgpool.net
>> > > > http://www.pgpool.net/mailman/listinfo/pgpool-hackers


More information about the pgpool-hackers mailing list