<div dir="ltr">Hi Ishii-San<div><br></div><div>Please find the attached WIP patch to allow the same name configuration parameters <span style="font-size:12.800000190734863px">with and without index postfix along with the integration of all newly added health_check_* parameters. </span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">To implement the same name parameter with and without index postfix is that, The patch makes adds the following to the config framework.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">-- All the array type config (</span><span style="color:rgb(0,0,0);font-family:menlo;font-size:11px">config_int_array, </span><span style="color:rgb(0,0,0);font-family:menlo;font-size:11px">config_string_array ...)</span><span style="font-size:12.800000190734863px"> parameters can be configured to allow the setting of values with the same name but with out providing the index.</span></div><div><span style="font-size:12.800000190734863px">-- This same named config parameter with and without index postfix must be of same data type.</span></div><div><span style="font-size:12.800000190734863px">-- The indexed (array) parameters and the same name parameter without index postfix can be made independent and also the index free one can be entangled with array.</span></div><div><span style="font-size:12.800000190734863px">-- The new </span><span style="color:rgb(120,73,42);font-family:menlo;font-size:11px">DEFAULT_FOR_NO_VALUE_ARRAY_VAR </span><span style="font-size:12.800000190734863px">flag enables the </span><span style="font-size:12.800000190734863px">index free value of the array type record to serve as the default value for all indexes for which the value is not provided </span></div><div><span style="font-size:12.800000190734863px">-- If the value for index free (same name parameter but without index postfix) is updated in the session and </span><span style="color:rgb(120,73,42);font-family:menlo;font-size:11px">DEFAULT_FOR_NO_VALUE_ARRAY_VAR</span><span style="font-size:12.800000190734863px"> flag is set the value of all indexes which are not provided by user are also updated for the session.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><div><span style="font-size:12.800000190734863px">Note that it is still a WIP patch, Although the functionality is complete from my side but it needs little cleanup and also more testing, but I want to share the early version with you to make sure the patch follows the same philosophy as</span><span style="font-size:12.800000190734863px"> envisioned by you for the type of configuration parameter.</span></div></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">Thanks</span></div><div><span style="font-size:12.800000190734863px">Best regards</span></div><div><span style="font-size:12.800000190734863px">Muhammad Usama</span></div><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 26, 2017 at 5:32 AM, Tatsuo Ishii <span dir="ltr"><<a href="mailto:ishii@sraoss.co.jp" target="_blank">ishii@sraoss.co.jp</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> On Tue, Apr 25, 2017 at 7:24 PM, Tatsuo Ishii <<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>> wrote:<br>
><br>
>> Hi Usama,<br>
>><br>
>> > Hi Ishii-San<br>
>> ><br>
>> > I am working on config framework modification to allow same name<br>
>> parameters<br>
>> > with and without index postfix, I am almost done with the framework<br>
>> related<br>
>> > changes.<br>
>><br>
>> Thanks!<br>
>><br>
>> > And now for testing I need to add one such parameter and I was thinking<br>
>> > instead of using a dummy configuration variable for testing I would<br>
>> rather<br>
>> > add the *health_check_period* and *health_check_period[idx]* so that you<br>
>> > can also use it.<br>
>> > For that can you tell me where do you want to create health_check_period<br>
>> > variable for each backend? Is BackendInfo structure is the right place?<br>
>><br>
>> I'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>
>><br>
><br>
> Sure thanks, And yes you are right the health_check_period doesn't needs<br>
> to go in shared memory,<br>
><br>
> You can just push the structure related changes for the health_check_period<br>
> parameters and I will make it configurable, that way it will save you the<br>
> time and also I will be able to test the changes before pushing the changes.<br>
<br>
</span>Thanks. I have just pushed chages to add the data structure along with<br>
sample configuration files changes.<br>
<br>
<a href="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=c0d209d76c67fe10690c33d0a982c0fb3b919544" rel="noreferrer" target="_blank">https://git.postgresql.org/<wbr>gitweb/?p=pgpool2.git;a=<wbr>commit;h=<wbr>c0d209d76c67fe10690c33d0a982c0<wbr>fb3b919544</a><br>
<div class="HOEnZb"><div class="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>
>> > Thanks<br>
>> > Best Regards<br>
>> ><br>
>> ><br>
>> > On Mon, Apr 24, 2017 at 7:42 AM, Tatsuo Ishii <<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>><br>
>> wrote:<br>
>> ><br>
>> >> >> On 21-Apr-2017, at 4:31 AM, Tatsuo Ishii <<a href="mailto:ishii@sraoss.co.jp">ishii@sraoss.co.jp</a>> wrote:<br>
>> >> >><br>
>> >> >> Usama,<br>
>> >> >><br>
>> >> >> Is it possible to have following config parameter at the same time?<br>
>> >> >> My feeling is we can't because current implementation of config<br>
>> >> >> handling does not allow it.<br>
>> >> >><br>
>> >> >> health_check_period = 10<br>
>> >> >> health_check_period0 = 5<br>
>> >> ><br>
>> >> > Yes, having the same named configuration parameter with and without<br>
>> >> index postfix would cause problem with the current implementations, but<br>
>> if<br>
>> >> we want to support this I can tweak the configuration framework to allow<br>
>> >> that.<br>
>> >><br>
>> >> That would be desirable.<br>
>> >><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>
>> >> > Thanks<br>
>> >> > Best regards<br>
>> >> > Muhammad Usama<br>
>> >> ><br>
>> >> >><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>
>> >> >>> Hi,<br>
>> >> >>><br>
>> >> >>> This is a Request for Comments on the new implementation of health<br>
>> >> >>> check aiming for Pgpool-II 3.7.<br>
>> >> >>><br>
>> >> >>> Problems:<br>
>> >> >>><br>
>> >> >>> Current implementation of health check is a single serial processing<br>
>> >> >>> for all of database nodes. This implies some limitations for health<br>
>> >> >>> check process: 1) it is not possible to specify different health<br>
>> check<br>
>> >> >>> configuration values for each database node, 2) node failure<br>
>> detection<br>
>> >> >>> may take longer. For example, if it takes 10 seconds before<br>
>> detecting<br>
>> >> >>> node 0 failure, then detecting node 1 failure will be delayed at<br>
>> least<br>
>> >> >>> 10 seconds because it starts node failure detection after node 0.<br>
>> >> >>><br>
>> >> >>> The solution:<br>
>> >> >>><br>
>> >> >>> Allow to specify health check parameters for each node. Pgpool.conf<br>
>> >> >>> will look like:<br>
>> >> >>><br>
>> >> >>> health_check_period0 = 10<br>
>> >> >>> health_check_timeout0 = 20<br>
>> >> >>> :<br>
>> >> >>> :<br>
>> >> >>><br>
>> >> >>> where "0" means database node 0 (similar concept as "backend_*0<br>
>> >> >>> parameters).<br>
>> >> >>><br>
>> >> >>> To make admin's life easier, current parameters can be used as<br>
>> >> >>> well. Suppose there are 3 nodes, and we have:<br>
>> >> >>><br>
>> >> >>> health_check_period = 10<br>
>> >> >>> health_check_period0 = 5<br>
>> >> >>><br>
>> >> >>> then health_check_period for node 1 and 2 will be 10, while<br>
>> >> >>> health_check_period for node 0 will be 5. So parameter names without<br>
>> >> >>> node id works as a "global variable".<br>
>> >> >>><br>
>> >> >>> The implementation:<br>
>> >> >>><br>
>> >> >>> Create separate child process of pgpool main process and let do the<br>
>> >> >>> heal check job for each database node. Once the health check child<br>
>> >> >>> process detects node failure, it signals to main process and main<br>
>> >> >>> process will perform failover.<br>
>> >> >>><br>
>> >> >>> This architecture makes pgpool main process simpler and robust,<br>
>> while<br>
>> >> >>> earlier detection of node failure by the health check child process.<br>
>> >> >>><br>
>> >> >>> Comments and suggestions are welcome.<br>
>> >> >>><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>
>> >> >>> ______________________________<wbr>_________________<br>
>> >> >>> pgpool-hackers mailing list<br>
>> >> >>> <a href="mailto:pgpool-hackers@pgpool.net">pgpool-hackers@pgpool.net</a><br>
>> >> >>> <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>
>> >><br>
>><br>
</div></div></blockquote></div><br></div>