<div dir="ltr"><div>Hello.</div><div><br></div><div>I have not enabled health checking.</div><div><br></div><div>I have uninstalled pgpool version 3.4.7 (tataraboshi). After, I have installed 3.4.6 (tataraboshi) and failover command is executed on standby server.</div><div><br></div><div>Regards.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 25, 2016 at 2:37 AM, Tatsuo Ishii <span dir="ltr">&lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; Hello.<br>
&gt;<br>
&gt; I am using &quot;load_balance_mode = off&quot;.<br>
<br>
I think load_balance_mode is irrelevant here.<br>
<br>
&gt; When postgresql service on standby node is down, pgpool log file on both<br>
&gt; nodes shows every 10 second:<br>
&gt;<br>
&gt; 2016-06-24 15:12:52: pid 5256: ERROR:  Failed to check replication time lag<br>
&gt; 2016-06-24 15:12:52: pid 5256: DETAIL:  No persistent db connection for the<br>
&gt; node 1<br>
&gt; 2016-06-24 15:12:52: pid 5256: HINT:  check sr_check_user and<br>
&gt; sr_check_password<br>
&gt; 2016-06-24 15:12:52: pid 5256: CONTEXT:  while checking replication time lag<br>
&gt; 2016-06-24 15:12:52: pid 5256: LOG:  failed to connect to PostgreSQL server<br>
&gt; on &quot;<a href="http://172.16.0.2:5432" rel="noreferrer" target="_blank">172.16.0.2:5432</a>&quot;, getsockopt() detected error &quot;Connection refused&quot;<br>
&gt; 2016-06-24 15:12:52: pid 5256: ERROR:  failed to make persistent db<br>
&gt; connection<br>
&gt; 2016-06-24 15:12:52: pid 5256: DETAIL:  connection to host:&quot;<a href="http://172.16.0.2:5432" rel="noreferrer" target="_blank">172.16.0.2:5432</a>&quot;<br>
&gt; failed<br>
<br>
It&#39;s normal because:<br>
<br>
&gt; 2016-06-24 15:12:52: pid 5256: DETAIL:  No persistent db connection for the<br>
&gt; node 1<br>
&gt; 2016-06-24 15:12:52: pid 5256: HINT:  check sr_check_user and<br>
<br>
means replicaton delay checking is failing (of course it fails).<br>
<br>
Have you enabled health checking? Otherwise pgpool doesn&#39;t notice that<br>
PostgreSQL goes down.<br>
<br>
&gt; If I execute sql sentence &quot;show pool nodes&quot;, then failover command is<br>
&gt; executed on standby node.<br>
<br>
Even without health checking, if you try to execute an SQL command,<br>
that could trigger fail over.<br>
<br>
&gt; 2016-06-24 15:14:48: pid 5329: LOG:  received degenerate backend request<br>
&gt; for node_id: 1 from pid [5329]<br>
&gt; 2016-06-24 15:14:48: pid 5329: FATAL:  failed to create a backend connection<br>
&gt; 2016-06-24 15:14:48: pid 5329: DETAIL:  executing failover on backend<br>
&gt; 2016-06-24 15:14:48: pid 1096: LOG:  watchdog notifying to start<br>
&gt; interlocking<br>
&gt; 2016-06-24 15:14:48: pid 1096: LOG:  watchdog became a new lock holder<br>
&gt; 2016-06-24 15:14:48: pid 1099: LOG:  sending watchdog response<br>
&gt; 2016-06-24 15:14:48: pid 1099: DETAIL:  WD_STAND_FOR_LOCK_HOLDER received<br>
&gt; but lock holder already exists<br>
&gt; 2016-06-24 15:14:49: pid 1096: LOG:  starting degeneration. shutdown host<br>
&gt; 172.16.0.2(5432)<br>
&gt; 2016-06-24 15:14:49: pid 1096: LOG:  Restart all children<br>
&gt; 2016-06-24 15:14:49: pid 1096: LOG:  execute command:<br>
&gt; /etc/pgpool-II/failover_stream.sh 1 172.16.0.1 /tmp/trigger_file0<br>
&gt; 2016-06-24 15:14:49: pid 5307: LOG:  child process received shutdown<br>
&gt; request signal 3<br>
&gt; 2016-06-24 15:14:49: pid 5363: LOG:  child process received shutdown<br>
&gt; request signal 3<br>
&gt; 2016-06-24 15:14:49: pid 5314: LOG:  child process received shutdown<br>
&gt; request signal 3<br>
&gt;<br>
&gt; (... more similar lines in log file ...)<br>
&gt;<br>
&gt; 2016-06-24 15:14:49: pid 5328: LOG:  child process received shutdown<br>
&gt; request signal 3<br>
&gt; 2016-06-24 15:14:49: pid 5093: LOG:  child process received shutdown<br>
&gt; request signal 3<br>
&gt; 2016-06-24 15:14:49: pid 1096: LOG:  watchdog notifying to end interlocking<br>
&gt; 2016-06-24 15:14:50: pid 1096: LOG:  failover: set new primary node: 0<br>
&gt; 2016-06-24 15:14:50: pid 1096: LOG:  failover: set new master node: 0<br>
&gt; 2016-06-24 15:14:50: pid 5412: LOG:  failback event detected<br>
&gt; 2016-06-24 15:14:50: pid 5412: DETAIL:  restarting myself<br>
&gt; failover done. shutdown host 172.16.0.2(5432)2016-06-24 15:14:50: pid 1096:<br>
&gt; LOG:  failover done. shutdown host 172.16.0.2(5432)<br>
&gt; 2016-06-24 15:14:50: pid 5256: ERROR:  Failed to check replication time lag<br>
&gt; 2016-06-24 15:14:50: pid 5256: DETAIL:  No persistent db connection for the<br>
&gt; node 1<br>
&gt; 2016-06-24 15:14:50: pid 5256: HINT:  check sr_check_user and<br>
&gt; sr_check_password<br>
&gt; 2016-06-24 15:14:50: pid 5256: CONTEXT:  while checking replication time lag<br>
&gt;<br>
&gt;<br>
&gt; I disable watchdog (&quot;use_watchdog = off&quot;), then failover command is<br>
&gt; executed on standby server when postgresql service is down.<br>
&gt;<br>
&gt; Is this working as expected?<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Jun 24, 2016 at 3:52 PM, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Works for me (without watchdog). When I shutdown standy node, it<br>
&gt;&gt; triggers failover.<br>
&gt;&gt;<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24757: LOG:  reading and processing packets<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24757: DETAIL:  postmaster on DB node 1 was<br>
&gt;&gt; shutdown by administrative command<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24757: LOG:  received degenerate backend request<br>
&gt;&gt; for node_id: 1 from pid [24757]<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24740: LOG:  starting degeneration. shutdown host<br>
&gt;&gt; /tmp(11003)<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24740: LOG:  Restart all children<br>
&gt;&gt; 2016-06-24 22:46:28: pid 24740: LOG:  execute command:<br>
&gt;&gt; /home/t-ishii/work/pgpool-II/current/aaa/etc/failover.sh 1 /tmp 11003<br>
&gt;&gt; /home/t-ishii/work/pgpool-II/current/aaa/data1 0 0 /tmp 0 11002<br>
&gt;&gt; /home/t-ishii/work/pgpool-II/current/aaa/da<br>
&gt;&gt;<br>
&gt;&gt; Best regards,<br>
&gt;&gt; --<br>
&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;<br>
&gt;&gt; &gt; Hello.<br>
&gt;&gt; &gt; I have two nodes with postgresql with streaming replication and pgpool<br>
&gt;&gt; with<br>
&gt;&gt; &gt; watchdog.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Using pgpool version 3.4.7 (tataraboshi):<br>
&gt;&gt; &gt; - If postgres service of standby server is down, then failover_command is<br>
&gt;&gt; &gt; not executed (no lines showed in pgpool log file).<br>
&gt;&gt; &gt; - If postgres service of primary server is down, then failover_command is<br>
&gt;&gt; &gt; executed (it is showed in pgpool log file).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Using pgpool version 3.4.6 (tataraboshi):<br>
&gt;&gt; &gt; - If postgres service of standby server is down, then failover_command is<br>
&gt;&gt; &gt; executed (it is showed in pgpool log file).<br>
&gt;&gt; &gt; - If postgres service of primary server is down, then failover_command is<br>
&gt;&gt; &gt; executed (it is showed in pgpool log file).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Why does failover_command is not executed with version 3.4.7 when<br>
&gt;&gt; postgres<br>
&gt;&gt; &gt; service in standby server is down?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks in advance.<br>
&gt;&gt;<br>
</blockquote></div><br></div>