Hello Tatsuo,<br><br>Attached is cumulative patch rebased to current master branch head which:<br>- Fixes health check timeout not always respected (includes unsetting non-blocking mode after connection has been successfully established);<br>

- Fixes failover on health check only support.<br><br>Kind regards,<br>Stevo.<br><br><div class="gmail_quote">2012/2/5 Stevo Slaviĉ <span dir="ltr">&lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Tatsuo,</p><p>Thank you very much for your time and effort put into analysis of the submitted patch,<br></p><p><br>
</p>
<p>Obviously I&#39;m missing something regarding healthcheck feature, so please clarify:</p><ul><li>
what is the purpose of healthcheck when backend flag is set to DISALLOW_TO_FAILOVER? To log that healthchecks are on time but will not actually do anything?</li><li>what is the purpose of healthcheck (especially with retries configured) when backend flag is set to ALLOW_TO_FAILOVER? When answering please consider case of non-helloworld application that connects to db via pgpool - will healthcheck be given a chance to fail even once?</li>


<li>since there is no other backend flag value than the mentioned two, what is the purpose of healthcheck (especially with retries configured) if it&#39;s not to be the sole process controlling when to failover?</li></ul>


I disagree that changing pgpool to give healthcheck feature a meaning disrupts DISALLOW_TO_FAILOVER meaning, it extends it just for case when healthcheck is configured - if one doesn&#39;t want healthcheck just keep on not-using it, it&#39;s disabled by default. Health checks and retries have only recently been introduced so I doubt there are many if any users of health check especially which have configured DISALLOW_TO_FAILOVER with expectation to just have health check logging but not actually do anything. Out of all pgpool healthcheck users which have backends set to DISALLOW_TO_FAILOVER too I believe most of them expect but do not know that this will not allow failover on health check, it will just make log bigger.<br>


Changes included in patch do not affect users which have health check configured and backend set to ALLOW_TO_FAILOVER.<br><p><br></p><p>About non-blocking connection to backend change:</p><ul><li>with pgpool in raw mode and extensive testing (endurance tests, failover and failback tests), I didn&#39;t notice any unwanted change in behaviour, apart from wanted non-blocking timeout aware health checks;</li>


<li>do you see or know about anything in pgpool depending on connection to backend being blocking one? will have a look myself, just asking maybe you&#39;ve found something already. will look into means to set connection back to being blocking after it&#39;s successfully established - maybe just changing that flag will do.<br>


</li></ul><br><p></p><p>Kind regards,</p><p>Stevo.</p><p><br></p>
<div class="gmail_quote">On Feb 5, 2012 6:50 AM, &quot;Tatsuo Ishii&quot; &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



Finially I have time to check your patches. Here is the result of review.<br>
<br>
&gt; Hello Tatsuo,<br>
&gt;<br>
&gt; Here is cumulative patch to be applied on pgpool master branch with<br>
&gt; following fixes included:<br>
&gt;<br>
&gt;    1. fix for health check bug<br>
&gt;       1. it was not possible to allow backend failover only on failed<br>
&gt;       health check(s);<br>
&gt;       2. to achieve this one just configures backend to<br>
&gt;       DISALLOW_TO_FAILOVER, sets fail_over_on_backend_error to off, and<br>
&gt;       configures health checks;<br>
&gt;       3. for this fix in code an unwanted check was removed in main.c,<br>
&gt;       after health check failed if DISALLOW_TO_FAILOVER was set for backend<br>
&gt;       failover would have been always prevented, even when one<br>
&gt; configures health<br>
&gt;       check whose sole purpose is to control failover<br>
<br>
This is not acceptable, at least for stable<br>
releases. DISALLOW_TO_FAILOVER and sets fail_over_on_backend_error are<br>
for different purposes. The former is for preventing any failover<br>
including health check. The latter is for write to communication<br>
socket.<br>
<br>
fail_over_on_backend_error = on<br>
                                   # Initiates failover when writing to the<br>
                                   # backend communication socket fails<br>
                                   # This is the same behaviour of pgpool-II<br>
                                   # 2.2.x and previous releases<br>
                                   # If set to off, pgpool will report an<br>
                                   # error and disconnect the session.<br>
<br>
Your patch changes the existing semantics. Another point is,<br>
DISALLOW_TO_FAILOVER allows to control per backend behavior. Your<br>
patch breaks it.<br>
<br>
&gt;       2. fix for health check bug<br>
&gt;       1. health check timeout was not being respected in all conditions<br>
&gt;       (icmp host unreachable messages dropped for security reasons, or<br>
&gt; no active<br>
&gt;       network component to send those message)<br>
&gt;       2. for this fix in code (main.c, pool.h, pool_connection_pool.c) inet<br>
&gt;       connections have been made to be non blocking, and during connection<br>
&gt;       retries status of now global health_check_timer_expired variable is being<br>
&gt;       checked<br>
<br>
This seems good. But I need more investigation. For example, your<br>
patch set non blocking to sockets but never revert back to blocking.<br>
<br>
&gt;       3. fix for failback bug<br>
&gt;       1. in raw mode, after failback (through pcp_attach_node) standby<br>
&gt;       node/backend would remain in invalid state<br>
<br>
It turned out that even failover was bugged. The status was not set to<br>
CON_DOWN. This leaves the status to CON_CONNECT_WAIT and it prevented<br>
failback from returning to normal state. I fixed this on master branch.<br>
<br>
&gt; (it would be in CON_UP, so on<br>
&gt;       failover after failback pgpool would not be able to connect to standby as<br>
&gt;       get_next_master_node expects standby nodes/backends in raw mode to be in<br>
&gt;       CON_CONNECT_WAIT state when finding next master node)<br>
&gt;       2. for this fix in code, when in raw mode on failback status of all<br>
&gt;       nodes/backends with CON_UP state is set to CON_CONNECT_WAIT -<br>
&gt; all children<br>
&gt;       are restarted anyway<br>
<br>
<br>
&gt; Neither of these fixes changes expected behaviour of related features so<br>
&gt; there are no changes to the documentation.<br>
&gt;<br>
&gt;<br>
&gt; Kind regards,<br>
&gt;<br>
&gt; Stevo.<br>
&gt;<br>
&gt;<br>
&gt; 2012/1/24 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;<br>
&gt;&gt; &gt; Additional testing confirmed that this fix ensures health check timer<br>
&gt;&gt; gets<br>
&gt;&gt; &gt; respected (should I create a ticket on some issue tracker? send<br>
&gt;&gt; cumulative<br>
&gt;&gt; &gt; patch with all changes to have it accepted?).<br>
&gt;&gt;<br>
&gt;&gt; We have problem with Mantis bug tracker and decided to stop using<br>
&gt;&gt; it(unless someone volunteers to fix it). Please send cumulative patch<br>
&gt;&gt; againt master head to this list so that we will be able to look<br>
&gt;&gt; into(be sure to include English doc changes).<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" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;<br>
&gt;&gt; &gt; Problem is that with all the testing another issue has been encountered,<br>
&gt;&gt; &gt; now with pcp_attach_node.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; With pgpool in raw mode and two backends in postgres 9 streaming<br>
&gt;&gt; &gt; replication, when backend0 fails, after health checks retries pgpool<br>
&gt;&gt; calls<br>
&gt;&gt; &gt; failover command and degenerates backend0, backend1 gets promoted to new<br>
&gt;&gt; &gt; master, pgpool can connect to that master, and two backends are in pgpool<br>
&gt;&gt; &gt; state 3/2. And this is ok and expected.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Once backend0 is recovered, it&#39;s attached back to pgpool using<br>
&gt;&gt; &gt; pcp_attach_node, and pgpool will show two backends in state 2/2 (in logs<br>
&gt;&gt; &gt; and in show pool_nodes; query) with backend0 taking all the load (raw<br>
&gt;&gt; &gt; mode). If after that recovery and attachment of backend0 pgpool is not<br>
&gt;&gt; &gt; restarted, and afetr some time backend0 fails again, after health check<br>
&gt;&gt; &gt; retries backend0 will get degenerated, failover command will get called<br>
&gt;&gt; &gt; (promotes standby to master), but pgpool will not be able to connect to<br>
&gt;&gt; &gt; backend1 (regardless if unix or inet sockets are used for backend1). Only<br>
&gt;&gt; &gt; if pgpool is restarted before second (complete) failure of backend0, will<br>
&gt;&gt; &gt; pgpool be able to connect to backend1.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Following code, pcp_attach_node (failback of backend0) will actually<br>
&gt;&gt; &gt; execute same code as for failover. Not sure what, but that failover does<br>
&gt;&gt; &gt; something with backend1 state or in memory settings, so that pgpool can<br>
&gt;&gt; no<br>
&gt;&gt; &gt; longer connect to backend1. Is this a known issue?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Kind regards,<br>
&gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2012/1/20 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Key file was missing from that commit/change - pool.h where<br>
&gt;&gt; &gt;&gt; health_check_timer_expired was made global. Included now attached patch.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2012/1/20 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Using exit_request was wrong and caused a bug. 4th patch needed -<br>
&gt;&gt; &gt;&gt;&gt; health_check_timer_expired is global now so it can be verified if it<br>
&gt;&gt; was<br>
&gt;&gt; &gt;&gt;&gt; set to 1 outside of main.c<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; 2012/1/19 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; Using exit_code was not wise. Tested and encountered a case where this<br>
&gt;&gt; &gt;&gt;&gt;&gt; results in a bug. Have to work on it more. Main issue is how in<br>
&gt;&gt; &gt;&gt;&gt;&gt; pool_connection_pool.c connect_inet_domain_socket_by_port function to<br>
&gt;&gt; know<br>
&gt;&gt; &gt;&gt;&gt;&gt; that health check timer has expired (set to 1). Any ideas?<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; 2012/1/19 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Here are the patches which should be applied to current pgpool head<br>
&gt;&gt; for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; fixing this issue:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-health-check-timeout.patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-health-check-retrying-after-failover.patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-clearing-exitrequest-flag.patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Quirk I noticed in logs was resolved as well - after failover pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; would perform healthcheck and report it is doing (max retries + 1) th<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; health check which was confusing. Rather I&#39;ve adjusted that it does<br>
&gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; reports it&#39;s doing a new health check cycle after failover.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; I&#39;ve tested and it works well - when in raw mode, backends set to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; disallow failover, failover on backend failure disabled, and health<br>
&gt;&gt; checks<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; configured with retries (30sec interval, 5sec timeout, 2 retries,<br>
&gt;&gt; 10sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; delay between retries).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Please test, and if confirmed ok include in next release.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt; 2012/1/16 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Here is pgpool.log, strace.out, and pgpool.conf when I tested with<br>
&gt;&gt; my<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; latest patch for health check timeout applied. It works well,<br>
&gt;&gt; except for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; single quirk, after failover completed in log files it was reported<br>
&gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 3rd health check retry was done (even though just 2 are configured,<br>
&gt;&gt; see<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; pgpool.conf) and that backend has returned to healthy state. That<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; interesting part from log file follows:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45 DEBUG: pid<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: retrying 3 th health checking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45 DEBUG: pid<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: health_check: 0 th DB node status: 3<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45 LOG:   pid<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: after some retrying backend returned to healthy state<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:32:15 sslavic pgpool[1163]: 2012-01-16 01:32:15 DEBUG: pid<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: starting health checking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:32:15 sslavic pgpool[1163]: 2012-01-16 01:32:15 DEBUG: pid<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: health_check: 0 th DB node status: 3<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; As can be seen in pgpool.conf, there is only one backend configured.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; pgpool did failover well after health check max retries has been<br>
&gt;&gt; reached<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; (pgpool just degraded that single backend to 3, and restarted child<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; processes).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; After this quirk has been logged, next health check logs were as<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; expected. Except those couple weird log entries, everything seems<br>
&gt;&gt; to be ok.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Maybe that quirk was caused by single backend only configuration<br>
&gt;&gt; corner<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; case. Will try tomorrow if it occurs on dual backend configuration.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 2012/1/16 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Hello Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Unfortunately, with your patch when A is on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; (pool_config-&gt;health_check_period &gt; 0) and B is on, when retry<br>
&gt;&gt; count is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; over, failover will be disallowed because of B being on.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Nenad&#39;s patch allows failover to be triggered only by health check.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Here is the patch which includes Nenad&#39;s fix but also fixes issue<br>
&gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; health check timeout not being respected.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Key points in fix for health check timeout being respected are:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - in pool_connection_pool.c connect_inet_domain_socket_by_port<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; function, before trying to connect, file descriptor is set to<br>
&gt;&gt; non-blocking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; mode, and also non-blocking mode error codes are handled,<br>
&gt;&gt; EINPROGRESS and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; EALREADY (please verify changes here, especially regarding closing<br>
&gt;&gt; fd)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - in main.c health_check_timer_handler has been changed to signal<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; exit_request to health check initiated<br>
&gt;&gt; connect_inet_domain_socket_by_port<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; function call (please verify this, maybe there is a better way to<br>
&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; from connect_inet_domain_socket_by_port if in<br>
&gt;&gt; health_check_timer_expired<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; has been set to 1)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; These changes will practically make connect attempt to be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; non-blocking and repeated until:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - connection is made, or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - unhandled connection error condition is reached, or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - health check timer alarm has been raised, or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - some other exit request (shutdown) has been issued.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Ok, let me clarify use cases regarding failover.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Currently there are three parameters:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a) health_check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; b) DISALLOW_TO_FAILOVER<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; c) fail_over_on_backend_error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source of errors which can trigger failover are 1)health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2)write<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to backend socket 3)read backend from socket. I represent each 1)<br>
&gt;&gt; as<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; A, 2) as B, 3) as C.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1) trigger failover if A or B or C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = on, b = off, c = on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2) trigger failover only when B or C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = off, c = on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 3) trigger failover only when B is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Impossible. Because C error always triggers failover.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 4) trigger failover only when C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = off, c = off<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 5) trigger failover only when A is error(Stevo wants this)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Impossible. Because C error always triggers failover.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 6) never trigger failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Impossible. Because C error always triggers failover.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; As you can see, C is the problem here (look at #3, #5 and #6)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If we implemented this:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; However I think we should disable failover if<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; DISALLOW_TO_FAILOVER set<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; in case of reading data from backend. This should have been<br>
&gt;&gt; done<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; when<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER was introduced because this is exactly<br>
&gt;&gt; what<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER tries to accomplish. What do you think?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1) trigger failover if A or B or C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = on, b = off, c = on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2) trigger failover only when B or C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = off, c = on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 3) trigger failover only when B is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = on, c = on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 4) trigger failover only when C is error<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = off, c = off<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 5) trigger failover only when A is error(Stevo wants this)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = on, b = on, c = off<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 6) never trigger failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a = off, b = on, c = off<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; So it seems my patch will solve all the problems including yours.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; (timeout while retrying is another issue of course).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; I agree, fail_over_on_backend_error isn&#39;t useful, just adds<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; confusion by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; overlapping with DISALLOW_TO_FAILOVER.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; With your patch or without it, it is not possible to failover<br>
&gt;&gt; only<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; health check (max retries) failure. With Nenad&#39;s patch, that<br>
&gt;&gt; part<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; works ok<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; and I think that patch is semantically ok - failover occurs even<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; though<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; DISALLOW_TO_FAILOVER is set for backend but only when health<br>
&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; configured too. Configuring health check without failover on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failed health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; check has no purpose. Also health check configured with allowed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failover on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; any condition other than health check (max retries) failure has<br>
&gt;&gt; no<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; purpose.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; fail_over_on_backend_error has different meaning from<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER. From the doc:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;  If true, and an error occurs when writing to the backend<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;  communication, pgpool-II will trigger the fail over procedure<br>
&gt;&gt; .<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; This<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;  is the same behavior as of pgpool-II 2.2.x or earlier. If set<br>
&gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;  false, pgpool will report an error and disconnect the session.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; This means that if pgpool failed to read from backend, it will<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; trigger<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; failover even if fail_over_on_backend_error to off. So<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; unconditionaly<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; disabling failover will lead backward imcompatibilty.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; However I think we should disable failover if<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; DISALLOW_TO_FAILOVER set<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; in case of reading data from backend. This should have been<br>
&gt;&gt; done<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; when<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER was introduced because this is exactly<br>
&gt;&gt; what<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER tries to accomplish. What do you think?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; For a moment I thought we could have set<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; fail_over_on_backend_error to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; off,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; and have backends set with ALLOW_TO_FAILOVER flag. But then I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; looked in<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; code.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; In child.c there is a loop child process goes through in its<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; lifetime.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; When<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; fatal error condition occurs before child process exits it<br>
&gt;&gt; will<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; call<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; notice_backend_error which will call degenerate_backend_set<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; which will<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; take into account fail_over_on_backend_error is set to off,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; causing<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; backend<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; to be degenerated and failover to occur. That&#39;s why we have<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backends set<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; with DISALLOW_TO_FAILOVER but with our patch applied, health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check could<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; cause failover to occur as expected.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; Maybe it would be enough just to modify<br>
&gt;&gt; degenerate_backend_set,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to take<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; fail_over_on_backend_error into account just like it already<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; takes<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; DISALLOW_TO_FAILOVER into account.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; 2012/1/15 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Yes and that behaviour which you describe as expected, is<br>
&gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; what we<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; want. We want pgpool to degrade backend0 and failover when<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; configured<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; max<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; health check retries have failed, and to failover only in<br>
&gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; case, so<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; sooner e.g. connection/child error condition, but as soon as<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; max health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; check retries have been attempted.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Maybe examples will be more clear.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Imagine two nodes (node 1 and node 2). On each node a single<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; pgpool and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; a<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; single backend. Apps/clients access db through pgpool on<br>
&gt;&gt; their<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; own node.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Two backends are configured in postgres native streaming<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; replication.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; pgpools are used in raw mode. Both pgpools have same<br>
&gt;&gt; backend as<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; backend0,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; and same backend as backend1.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; initial state: both backends are up and pgpool can access<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; them, clients<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; connect to their pgpool and do their work on master backend,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backend0.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 1st case: unmodified/non-patched pgpool 3.1.1 is used,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backends are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; configured with ALLOW_TO_FAILOVER flag<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - temporary network outage happens between pgpool on node 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and since<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; ALLOW_TO_FAILOVER is set, pgpool performs failover without<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; giving<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; chance to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; pgpool health check retries to control whether backend is<br>
&gt;&gt; just<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; temporarily<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; inaccessible<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - failover command on node 2 promotes standby backend to a<br>
&gt;&gt; new<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; master -<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; split brain occurs, with two masters<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 2nd case: unmodified/non-patched pgpool 3.1.1 is used,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backends are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; configured with DISALLOW_TO_FAILOVER<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - temporary network outage happens between pgpool on node 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and since<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER is set, pgpool does not perform<br>
&gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0 condition,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; it&#39;s not accessible, there will be no health check retries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; because<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER is set, no failover occurs ever<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 3rd case, pgpool 3.1.1 + patch you&#39;ve sent applied, and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backends<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; configured with DISALLOW_TO_FAILOVER<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - temporary network outage happens between pgpool on node 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and since<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER is set, pgpool does not perform<br>
&gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0 condition,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; it&#39;s not accessible, health check retries happen, and even<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; after max<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; retries, no failover happens since failover is disallowed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 4th expected behaviour, pgpool 3.1.1 + patch we sent, and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backends<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; configured with DISALLOW_TO_FAILOVER<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - temporary network outage happens between pgpool on node 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and since<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER is set, pgpool does not perform<br>
&gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0 condition,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; it&#39;s not accessible, health check retries happen, before a<br>
&gt;&gt; max<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; network condition is cleared, retry happens, and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; remains to be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; master, no failover occurs, temporary network issue did not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; cause split<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; brain<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - after some time, temporary network outage happens again<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; between pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; on node 2 and backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and since<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER is set, pgpool does not perform<br>
&gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0 condition,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; it&#39;s not accessible, health check retries happen, after max<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; retries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; backend0 is still not accessible, failover happens, standby<br>
&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; new<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; master<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; and backend0 is degraded<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; In my test evironment, the patch works as expected. I have<br>
&gt;&gt; two<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; backends. Health check retry conf is as follows:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; health_check_max_retries = 3<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; health_check_retry_delay = 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 5 09:17:20 LOG:   pid 21411: Backend status file<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; /home/t-ishii/work/<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="http://git.postgresql.org/test/log/pgpool_status" target="_blank">git.postgresql.org/test/log/pgpool_status</a> discarded<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:20 LOG:   pid 21411: pgpool-II<br>
&gt;&gt; successfully<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; started.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; version 3.2alpha1 (hatsuiboshi)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:20 LOG:   pid 21411: find_primary_node:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; primary node<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; id<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; is 0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- backend1 was shutdown<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check_replication_time_lag: could<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; not connect to DB node 1, check sr_check_user and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sr_check_password<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- health check failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- start retrying<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:50 LOG:   pid 21411: health check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sleep time: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:51 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:51 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:51 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:51 LOG:   pid 21411: health check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sleep time: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:52 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:52 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:52 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:52 LOG:   pid 21411: health check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sleep time: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:53 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:53 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:53 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:53 LOG:   pid 21411: health_check: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failover is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; canceld<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; because failover is disallowed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- after 3 retries, pgpool wanted to failover, but gave up<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; because<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; DISALLOW_TO_FAILOVER is set for backend1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:00 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:00 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:00 ERROR: pid 21445:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check_replication_time_lag: could<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; not connect to DB node 1, check sr_check_user and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sr_check_password<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:03 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:03 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:03 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:03 LOG:   pid 21411: health check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sleep time: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:04 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; connect_unix_domain_socket_by_port:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; directory<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:04 ERROR: pid 21411:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; make_persistent_db_connection:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection to /tmp(11001) failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:04 ERROR: pid 21411: health check failed.<br>
&gt;&gt; 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; th host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; /tmp<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; at port 11001 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:04 LOG:   pid 21411: health check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sleep time: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:18:05 LOG:   pid 21411: after some retrying<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backend<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; returned to healthy state<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- started backend1 and pgpool succeeded in health<br>
&gt;&gt; checking.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Resumed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; using backend1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Hello Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Thank you for the patch and effort, but unfortunately<br>
&gt;&gt; this<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; change<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; won&#39;t<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; work for us. We need to set disallow failover to prevent<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failover on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; child<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; reported connection errors (it&#39;s ok if few clients lose<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; their<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; connection or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; can not connect), and still have pgpool perform failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; but only on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; failed<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; health check (if configured, after max retries threshold<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; has been<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; reached).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Maybe it would be best to add an extra value for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backend_flag -<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; ALLOW_TO_FAILOVER_ON_HEALTH_CHECK or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; DISALLOW_TO_FAILOVER_ON_CHILD_ERROR.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; It should behave same as DISALLOW_TO_FAILOVER is set,<br>
&gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; only<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; difference<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; in behaviour when health check (if set, max retries) has<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failed -<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; unlike<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; DISALLOW_TO_FAILOVER, this new flag should allow failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in this<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; case<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; only.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Without this change health check (especially health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; retries)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; doesn&#39;t<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; make much sense - child error is more likely to occur on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; (temporary)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; backend failure then health check and will or will not<br>
&gt;&gt; cause<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; failover to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; occur depending on backend flag, without giving health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check retries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; a<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; chance to determine if failure was temporary or not,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; risking split<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; brain<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; situation with two masters just because of temporary<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; network link<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; hiccup.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Our main problem remains though with the health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; timeout not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; being<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; respected in these special conditions we have. Maybe<br>
&gt;&gt; Nenad<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; can help<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; you<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; more to reproduce the issue on your environment.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Kind regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012/1/13 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Thanks for pointing it out.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Yes, checking DISALLOW_TO_FAILOVER before retrying is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrong.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; However, after retry count over, we should check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; think.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Attached is the patch attempt to fix it. Please try.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; pgpool is being used in raw mode - just for (health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check based)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; part, so applications are not required to restart when<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; standby<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; gets<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; promoted to new master. Here is pgpool.conf file and a<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; very small<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; we&#39;re using applied to pgpool 3.1.1 release.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; We have to have DISALLOW_TO_FAILOVER set for the<br>
&gt;&gt; backend<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; since any<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; child<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; process that detects condition that master/backend0 is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; available, if<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; DISALLOW_TO_FAILOVER was not set, will degenerate<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backend without<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; giving<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; health check a chance to retry. We need health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; with retries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; because<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; condition that backend0 is not available could be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; temporary<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; (network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; glitches to the remote site where master is, or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; deliberate<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; failover<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; of<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; master postgres service from one node to the other on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; remote site<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; in<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; both<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; cases remote means remote to the pgpool that is going<br>
&gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; perform<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; checks and ultimately the failover) and we don&#39;t want<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; standby to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; promoted as easily to a new master, to prevent<br>
&gt;&gt; temporary<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; conditions<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; which could occur frequently to frequently cause split<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; brain with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; two<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; masters.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; But then, with DISALLOW_TO_FAILOVER set, without the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; patch health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; will not retry and will thus give only one chance to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backend (if<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; check ever occurs before child process failure to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; connect to the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; backend),<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; rendering retry settings effectively to be ignored.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; That&#39;s where<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; this<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; comes into action - enables health check retries while<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; child<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; processes<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; prevented to degenerate backend.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; I don&#39;t think, but I could be wrong, that this patch<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; influences<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; behavior we&#39;re seeing with unwanted health check<br>
&gt;&gt; attempt<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; delays.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Also,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; knowing this, maybe pgpool could be patched or some<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; other support<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; built<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; into it to cover this use case.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; 2012/1/12 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; I have accepted the moderation request. Your post<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; should be sent<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; shortly.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Also I have raised the post size limit to 1MB.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; I will look into this...<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Here is the log file and strace output file (this<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; time in an<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; archive,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; didn&#39;t know about 200KB constraint on post size<br>
&gt;&gt; which<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; requires<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; moderator<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; approval). Timings configured are 30sec health<br>
&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; interval,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 5sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; timeout, and 2 retries with 10sec retry delay.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; It takes a lot more than 5sec from started health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; sleeping<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; 10sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; for first retry.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Seen in code (main.x, health_check() function),<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; within (retry)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; attempt<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; there is inner retry (first with postgres database<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; then with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; template1)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; that part doesn&#39;t seem to be interrupted by alarm.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; 2012/1/12 Stevo Slaviĉ &lt;<a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Here is the log file and strace output file.<br>
&gt;&gt; Timings<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; configured<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; 30sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; health check interval, 5sec timeout, and 2 retries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; with 10sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; delay.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; It takes a lot more than 5sec from started health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; sleeping<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; 10sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; for first retry.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Seen in code (main.x, health_check() function),<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; within (retry)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; attempt<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; there is inner retry (first with postgres database<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; then with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; template1)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; that part doesn&#39;t seem to be interrupted by alarm.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 2012/1/11 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Ok, I will do it. In the mean time you could use<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;strace -tt<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; -p<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; PID&quot;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; to see which system call is blocked.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; OK, got the info - key point is that ip<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; forwarding is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; disabled for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; security<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; reasons. Rules in iptables are not important,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; iptables can<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; stopped,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; or<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; previously added rules removed.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Here are the steps to reproduce (kudos to my<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; colleague<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; Nenad<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; Bulatovic<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; providing this):<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 1.) make sure that ip forwarding is off:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;     echo 0 &gt; /proc/sys/net/ipv4/ip_forward<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2.) create IP alias on some interface (and have<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; postgres<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; listen on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; it):<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;     ip addr add x.x.x.x/yy dev ethz<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 3.) set backend_hostname0 to aforementioned IP<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 4.) start pgpool and monitor health checks<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 5.) remove IP alias:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;     ip addr del x.x.x.x/yy dev ethz<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Here is the interesting part in pgpool log<br>
&gt;&gt; after<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; this:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358: starting<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; checking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health_check: 0 th DB<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; node<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; status: 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health_check: 1 th DB<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; node<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; status: 1<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:34 DEBUG: pid 24358: starting<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; checking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:34 DEBUG: pid 24358:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health_check: 0 th DB<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; node<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; status: 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:41:43 DEBUG: pid 24358:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; health_check: 0 th DB<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; node<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; status: 2<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:41:46 ERROR: pid 24358: health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check failed.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; 0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; th<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 192.168.2.27 at port 5432 is down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:41:46 LOG:   pid 24358: health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; sleep<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; time:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; 10<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; second(s)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; That pgpool was configured with health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; interval of<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 30sec,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; 5sec<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; timeout, and 10sec retry delay with 2 max<br>
&gt;&gt; retries.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Making use of libpq instead for connecting to<br>
&gt;&gt; db<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; checks<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; IMO<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; should resolve it, but you&#39;ll best determine<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; which call<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; exactly<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; gets<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; blocked waiting. Btw, psql with<br>
&gt;&gt; PGCONNECT_TIMEOUT<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; env var<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; configured<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; respects that env var timeout.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; On Wed, Jan 11, 2012 at 11:15 AM, Stevo Slaviĉ<br>
&gt;&gt; &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Did you restart iptables after adding rule?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; On Wed, Jan 11, 2012 at 11:12 AM, Stevo<br>
&gt;&gt; Slaviĉ &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="mailto:sslavic@gmail.com" target="_blank">sslavic@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Looking into this to verify if these are all<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; necessary<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; changes<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; have<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; port unreachable message silently rejected<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; (suspecting<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; some<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; kernel<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; parameter tuning is needed).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Just to clarify it&#39;s not a problem that host<br>
&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; being<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; detected<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; to be down, but the timing when that<br>
&gt;&gt; happens. On<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; environment<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; where<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; issue is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; reproduced pgpool as part of health check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; attempt tries<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; connect<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; backend and hangs for tcp timeout instead of<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; being<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; interrupted<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; timeout<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; alarm. Can you verify/confirm please the<br>
&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; retry<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; timings<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; are not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; delayed?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; On Wed, Jan 11, 2012 at 10:50 AM, Tatsuo<br>
&gt;&gt; Ishii &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Ok, I did:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; # iptables -A FORWARD -j REJECT<br>
&gt;&gt; --reject-with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; icmp-port-unreachable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; on the host where pgpoo is running. And pull<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; cable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; from<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; backend0 host network interface. Pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; detected the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; being<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; down<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; as expected...<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; English:<br>
&gt;&gt; <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Backend is not destination of this<br>
&gt;&gt; message,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; is,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; we<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; don&#39;t<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; want it to ever get it. With command I&#39;ve<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sent you<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; rule<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; will<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; created for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; any source and destination.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; On Wed, Jan 11, 2012 at 10:38 AM, Tatsuo<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Ishii &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; I did following:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Do following on the host where pgpool is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; running on:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; # iptables -A FORWARD -j REJECT<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --reject-with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; icmp-port-unreachable -d<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; 133.137.177.124<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; (133.137.177.124 is the host where<br>
&gt;&gt; backend<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; is running<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; on)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Pull network cable from backend0 host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; interface.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; detected the host being down as expected.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Am I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; missing<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; something?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; English:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Hello Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; With backend0 on one host just<br>
&gt;&gt; configure<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; following<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; rule on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; other<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; where<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; pgpool is:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; iptables -A FORWARD -j REJECT<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --reject-with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; icmp-port-unreachable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; and then have pgpool startup with<br>
&gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; checking<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; retrying<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; configured,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; and then pull network cable from<br>
&gt;&gt; backend0<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; host<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; interface.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; On Wed, Jan 11, 2012 at 6:27 AM, Tatsuo<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Ishii &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; I want to try to test the situation<br>
&gt;&gt; you<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; descrived:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; When system is configured for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; security<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; reasons<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; return<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; destination<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; host unreachable messages, even<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; though<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; health_check_timeout is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; But I don&#39;t know how to do it. I<br>
&gt;&gt; pulled<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; out the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; cable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; pgpool detected it as expected. Also I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; configured<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; server<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; which<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; PostgreSQL is running on to disable<br>
&gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 5432<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; port. In<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; this<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; case<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; connect(2) returned EHOSTUNREACH (No<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; route to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; host)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; so<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; detected<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; the error as expected.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Could you please instruct me?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; English:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>




&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Hello Tatsuo,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Thank you for replying!<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; I&#39;m not sure what exactly is<br>
&gt;&gt; blocking,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; just by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; code<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; analysis I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; suspect it is the part where a<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; connection is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; made<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; db<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; it<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; doesn&#39;t<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; seem to get interrupted by alarm.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Tested<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; thoroughly<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; health<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; check<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; behaviour,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; it works really well when host/ip is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; there and<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; just<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; backend/postgres<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; down, but not when backend host/ip<br>
&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; down. I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; could<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; see in<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; log<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; initial<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; health check and each retry got<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; delayed when<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; host/ip is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; reachable,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; while when just backend is not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; listening (is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; down)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; reachable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; host/ip<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; then initial health check and all<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; retries are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; exact to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; settings in<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; pgpool.conf.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; PGCONNECT_TIMEOUT is listed as one<br>
&gt;&gt; of<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the libpq<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; environment<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; variables<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; in<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; the docs (see<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.postgresql.org/docs/9.1/static/libpq-envars.html" target="_blank">http://www.postgresql.org/docs/9.1/static/libpq-envars.html</a>)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; There is equivalent parameter in<br>
&gt;&gt; libpq<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; PGconnectdbParams (<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; see<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; <a href="http://www.postgresql.org/docs/9.1/static/libpq-connect.html#LIBPQ-CONNECT-CONNECT-TIMEOUT" target="_blank">http://www.postgresql.org/docs/9.1/static/libpq-connect.html#LIBPQ-CONNECT-CONNECT-TIMEOUT</a><br>




&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; )<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; At the beginning of that same page<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; there are<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; some<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; important<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; infos on<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; using<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; these functions.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; psql respects PGCONNECT_TIMEOUT.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; Stevo.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt; On Wed, Jan 11, 2012 at 12:13 AM,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Tatsuo Ishii &lt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; <a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Hello pgpool community,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; When system is configured for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; security<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; reasons<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; return<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; destination<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; host unreachable messages, even<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; though<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; health_check_timeout is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; configured,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; socket call will block and alarm<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; will not get<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; raised<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; until TCP<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; timeout<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; occurs.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Interesting. So are you saying that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; read(2)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; cannot be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; interrupted by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; alarm signal if the system is<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; configured not to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; return<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; destination<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; host unreachable message? Could you<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; please<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; guide<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; me<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; where I<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; can<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; get<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; such that info? (I&#39;m not a network<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; expert).<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Not a C programmer, found some<br>
&gt;&gt; info<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; select<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; call<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; could be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; replace<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; select/pselect calls. Maybe it<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; would be best<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; if<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; PGCONNECT_TIMEOUT<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; value<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; could be used here for connection<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; timeout.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; pgpool<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; has<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; libpq as<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; dependency,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; why isn&#39;t it using libpq for the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; healthcheck<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; db<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; connect<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; calls, then<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; PGCONNECT_TIMEOUT would be<br>
&gt;&gt; applied?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; I don&#39;t think libpq uses<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; select/pselect for<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; establishing<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; connection,<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; but using libpq instead of homebrew<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; code seems<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; an<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; idea.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Let me<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; think about it.<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; One question. Are you sure that<br>
&gt;&gt; libpq<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; can deal<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; case<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; (not to<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; return destination host unreachable<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; messages)<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; by<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; using<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; PGCONNECT_TIMEOUT?<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; English:<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>




&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt;<br>
</blockquote></div>
</blockquote></div><br>