<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 25, 2017 at 7:24 PM, Tatsuo Ishii <span dir="ltr">&lt;<a href="mailto:ishii@sraoss.co.jp" target="_blank">ishii@sraoss.co.jp</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi Usama,<br>
<span class="gmail-"><br>
&gt; Hi Ishii-San<br>
&gt;<br>
&gt; I am working on config framework modification to allow same name parameters<br>
&gt; with and without index postfix, I am almost done with the framework related<br>
&gt; changes.<br>
<br>
</span>Thanks!<br>
<span class="gmail-"><br>
&gt; And now for testing I need to add one such parameter and I was thinking<br>
&gt; instead of using a dummy configuration variable for testing I would rather<br>
</span>&gt; add the *health_check_period* and *health_check_period[idx]* so that you<br>
<span class="gmail-">&gt; can also use it.<br>
&gt; For that can you tell me where do you want to create health_check_period<br>
&gt; variable for each backend? Is BackendInfo structure is the right place?<br>
<br>
</span>I&#39;m working on it for the part. I will push it tomorrow. BTW, unlike<br>
BackendInfo, the structure does not need to live on the shared memory.<br></blockquote><div><br></div><div>Sure thanks, And yes you are right  the health_check_period doesn&#39;t needs to go in shared memory,</div><div><br></div><div>You can just push the structure related changes for the health_check_period parameters and I will make it configurable, that way it will save you the time and also I will be able to test the changes before pushing the changes.</div><div><br></div><div>Thanks</div><div>Best Regards</div><div>Muhammad Usama</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div class="gmail-HOEnZb"><div class="gmail-h5"><br>
Best regards,<br>
--<br>
Tatsuo Ishii<br>
SRA OSS, Inc. Japan<br>
English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_<wbr>en.php</a><br>
Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.<wbr>jp</a><br>
<br>
&gt; Thanks<br>
&gt; Best Regards<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Apr 24, 2017 at 7:42 AM, Tatsuo Ishii &lt;<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; &gt;&gt; On 21-Apr-2017, at 4:31 AM, Tatsuo Ishii &lt;<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Usama,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Is it possible to have following config parameter at the same time?<br>
&gt;&gt; &gt;&gt; My feeling is we can&#39;t because current implementation of config<br>
&gt;&gt; &gt;&gt; handling does not allow it.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; health_check_period = 10<br>
&gt;&gt; &gt;&gt; health_check_period0 = 5<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Yes, having the same named configuration parameter with and without<br>
&gt;&gt; index postfix would cause problem with the current implementations, but if<br>
&gt;&gt; we want to support this I can tweak the configuration framework to allow<br>
&gt;&gt; that.<br>
&gt;&gt;<br>
&gt;&gt; That would be desirable.<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_<wbr>en.php</a><br>
&gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.<wbr>jp</a><br>
&gt;&gt;<br>
&gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt; Best regards<br>
&gt;&gt; &gt; Muhammad Usama<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Best regards,<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_<wbr>en.php</a><br>
&gt;&gt; &gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.<wbr>jp</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; This is a Request for Comments on the new implementation of health<br>
&gt;&gt; &gt;&gt;&gt; check aiming for Pgpool-II 3.7.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Problems:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Current implementation of health check is a single serial processing<br>
&gt;&gt; &gt;&gt;&gt; for all of database nodes. This implies some limitations for health<br>
&gt;&gt; &gt;&gt;&gt; check process: 1) it is not possible to specify different health check<br>
&gt;&gt; &gt;&gt;&gt; configuration values for each database node, 2) node failure detection<br>
&gt;&gt; &gt;&gt;&gt; may take longer. For example, if it takes 10 seconds before detecting<br>
&gt;&gt; &gt;&gt;&gt; node 0 failure, then detecting node 1 failure will be delayed at least<br>
&gt;&gt; &gt;&gt;&gt; 10 seconds because it starts node failure detection after node 0.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; The solution:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Allow to specify health check parameters for each node. Pgpool.conf<br>
&gt;&gt; &gt;&gt;&gt; will look like:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; health_check_period0 = 10<br>
&gt;&gt; &gt;&gt;&gt; health_check_timeout0 = 20<br>
&gt;&gt; &gt;&gt;&gt; :<br>
&gt;&gt; &gt;&gt;&gt; :<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; where &quot;0&quot; means database node 0 (similar concept as &quot;backend_*0<br>
&gt;&gt; &gt;&gt;&gt; parameters).<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; To make admin&#39;s life easier, current parameters can be used as<br>
&gt;&gt; &gt;&gt;&gt; well. Suppose there are 3 nodes, and we have:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; health_check_period = 10<br>
&gt;&gt; &gt;&gt;&gt; health_check_period0 = 5<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; then health_check_period for node 1 and 2 will be 10, while<br>
&gt;&gt; &gt;&gt;&gt; health_check_period for node 0 will be 5. So parameter names without<br>
&gt;&gt; &gt;&gt;&gt; node id works as a &quot;global variable&quot;.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; The implementation:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Create separate child process of pgpool main process and let do the<br>
&gt;&gt; &gt;&gt;&gt; heal check job for each database node. Once the health check child<br>
&gt;&gt; &gt;&gt;&gt; process detects node failure, it signals to main process and main<br>
&gt;&gt; &gt;&gt;&gt; process will perform failover.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; This architecture makes pgpool main process simpler and robust, while<br>
&gt;&gt; &gt;&gt;&gt; earlier detection of node failure by the health check child process.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Comments and suggestions are welcome.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Best regards,<br>
&gt;&gt; &gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_<wbr>en.php</a><br>
&gt;&gt; &gt;&gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.<wbr>jp</a><br>
&gt;&gt; &gt;&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt;&gt; pgpool-hackers mailing list<br>
&gt;&gt; &gt;&gt;&gt; <a href="mailto:pgpool-hackers@pgpool.net">pgpool-hackers@pgpool.net</a><br>
&gt;&gt; &gt;&gt;&gt; <a href="http://www.pgpool.net/mailman/listinfo/pgpool-hackers" rel="noreferrer" target="_blank">http://www.pgpool.net/mailman/<wbr>listinfo/pgpool-hackers</a><br>
&gt;&gt;<br>
</div></div></blockquote></div><br></div></div>