Hello Tatsuo,<br><br>Thank you for accepting and improving majority of the changes. Unfortunately, not accepted part is a show stopper so I still have to use patched/customized pgpool version in production, since it seems still to be impossible to configure pgpool so that health check is only controls if and when failover should triggered. With latest sources, and pgpool configured as you suggested (backed flag set to ALLOW_TO_FAILOVER, and fail_over_on_backend_error set to off) with two backends in raw mode, after initial stable state pgpool triggered failover of primary backend as soon as that backend became inaccessible to pgpool without giving healthcheck a chance. Primary backend was shutdown to simulate failure/relocation but same would happen if just connecting to backend failed because of temporary network issue.<br>
<br>This behaviour is in line with documentation of fail_over_on_backend_error configuration parameter which states:<br>&quot;Please note that even if this parameter is set to off, however, pgpool will also do the fail over when 
connecting to a backend fails or pgpool detects the administrative shutdown of 
postmaster.&quot;<br><br>But, it is perfectly valid requirement to want to prevent failover to occur immediately when connecting to a backend fails - that condition could be temporary, e.g. temporary network condition. Health check retries were designed to cover this situation, so one can configure even for health check to fail connecting several times, but all is fine and no failover should occur as long as after configured number of retries backend is accessible again.<br>
<br>Also, it is perfectly valid requirement to prevent failover to occur immediately when administrative shutdown of backend is performed. For example, a single backend for high availability and easy maintenance can be configured as cluster service with e.g. two or more nodes where it can run while it actually runs on one node only at a given point in time. So e.g. when admin wants to upgrade postgres installation on each of the nodes within the cluster, to upgrade postgres installation on a node where postgres service is currently active, admin relocates service to some other node in a cluster. Relocation causes stop (administrative shutdown) of postgres service on currently active node, and starts it on another node. pgpool which is configured to use such clustered postgres service as a single backend (bound to cluster service ip) should not perform failover on detected administrative shutdown - reloaction takes time, and healthcheck is configured to give relocation enough time, and it should be only one to trigger failover if backend is still not accessible after configured number of retries and delays between them.<br>
<br>Given these two examples, I hope you&#39;ll agree that it is valid requirement to want to let healthcheck only control when failover should be triggered.<br><br>Unfortunately this is not possible at the moment. Configuring backend flag to DISALLOW_TO_FAILOVER will prevent health check to trigger failover. With fail_over_on_backend_error set to off, will let failover be triggered immediately on temporary conditions that health check with retries should handle.<br>
<br>Did I miss something, how does one configure pgpool to have health check to be only process in pgpool that triggers failover?<br><br>Kind regards,<br>Stevo.<br><br><div class="gmail_quote">2012/2/19 Tatsuo Ishii <span dir="ltr">&lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Stevo,<br>
<br>
Thanks for the patches. I have committed changes except the part which<br>
you ignore DISALLOW_TO_FAILOVER. Instead I modified low level socket<br>
reading functions not to unconditionaly failover when fails to read<br>
from backend sockets (only failover when If fail_over_on_backend_error<br>
is on). So if you want to trigger failover only when health checking<br>
fails, you want to turn off fail_over_on_backend_error and turn off<br>
DISALLOW_TO_FAILOVER.<br>
<div class="im">--<br>
Tatsuo Ishii<br>
SRA OSS, Inc. Japan<br>
English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
<br>
&gt; Hello Tatsuo,<br>
&gt;<br>
</div><div class="im">&gt; Attached is cumulative patch rebased to current master branch head which:<br>
&gt; - Fixes health check timeout not always respected (includes unsetting<br>
&gt; non-blocking mode after connection has been successfully established);<br>
&gt; - Fixes failover on health check only support.<br>
&gt;<br>
&gt; Kind regards,<br>
&gt; Stevo.<br>
&gt;<br>
&gt; 2012/2/5 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;<br>
&gt;&gt; Tatsuo,<br>
&gt;&gt;<br>
&gt;&gt; Thank you very much for your time and effort put into analysis of the<br>
&gt;&gt; submitted patch,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Obviously I&#39;m missing something regarding healthcheck feature, so please<br>
&gt;&gt; clarify:<br>
&gt;&gt;<br>
</div>&gt;&gt;    - what is the purpose of healthcheck when backend flag is set to<br>
<div class="im">&gt;&gt;    DISALLOW_TO_FAILOVER? To log that healthchecks are on time but will not<br>
&gt;&gt;    actually do anything?<br>
</div>&gt;&gt;    - what is the purpose of healthcheck (especially with retries<br>
<div class="im">&gt;&gt;    configured) when backend flag is set to ALLOW_TO_FAILOVER? When answering<br>
&gt;&gt;    please consider case of non-helloworld application that connects to db via<br>
&gt;&gt;    pgpool - will healthcheck be given a chance to fail even once?<br>
</div>&gt;&gt;    - since there is no other backend flag value than the mentioned two,<br>
<div class="im">&gt;&gt;    what is the purpose of healthcheck (especially with retries configured) if<br>
&gt;&gt;    it&#39;s not to be the sole process controlling when to failover?<br>
&gt;&gt;<br>
&gt;&gt; I disagree that changing pgpool to give healthcheck feature a meaning<br>
&gt;&gt; disrupts DISALLOW_TO_FAILOVER meaning, it extends it just for case when<br>
&gt;&gt; healthcheck is configured - if one doesn&#39;t want healthcheck just keep on<br>
&gt;&gt; not-using it, it&#39;s disabled by default. Health checks and retries have only<br>
&gt;&gt; recently been introduced so I doubt there are many if any users of health<br>
&gt;&gt; check especially which have configured DISALLOW_TO_FAILOVER with<br>
&gt;&gt; expectation to just have health check logging but not actually do anything.<br>
&gt;&gt; Out of all pgpool healthcheck users which have backends set to<br>
&gt;&gt; DISALLOW_TO_FAILOVER too I believe most of them expect but do not know that<br>
&gt;&gt; this will not allow failover on health check, it will just make log bigger.<br>
&gt;&gt; Changes included in patch do not affect users which have health check<br>
&gt;&gt; configured and backend set to ALLOW_TO_FAILOVER.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; About non-blocking connection to backend change:<br>
&gt;&gt;<br>
</div>&gt;&gt;    - with pgpool in raw mode and extensive testing (endurance tests,<br>
<div class="im">&gt;&gt;    failover and failback tests), I didn&#39;t notice any unwanted change in<br>
&gt;&gt;    behaviour, apart from wanted non-blocking timeout aware health checks;<br>
</div>&gt;&gt;    - do you see or know about anything in pgpool depending on connection<br>
<div><div class="h5">&gt;&gt;    to backend being blocking one? will have a look myself, just asking maybe<br>
&gt;&gt;    you&#39;ve found something already. will look into means to set connection back<br>
&gt;&gt;    to being blocking after it&#39;s successfully established - maybe just changing<br>
&gt;&gt;    that flag will do.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Kind regards,<br>
&gt;&gt;<br>
&gt;&gt; Stevo.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Feb 5, 2012 6:50 AM, &quot;Tatsuo Ishii&quot; &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Finially I have time to check your patches. Here is the result of review.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Hello Tatsuo,<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Here is cumulative patch to be applied on pgpool master branch with<br>
&gt;&gt;&gt; &gt; following fixes included:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;    1. fix for health check bug<br>
&gt;&gt;&gt; &gt;       1. it was not possible to allow backend failover only on failed<br>
&gt;&gt;&gt; &gt;       health check(s);<br>
&gt;&gt;&gt; &gt;       2. to achieve this one just configures backend to<br>
&gt;&gt;&gt; &gt;       DISALLOW_TO_FAILOVER, sets fail_over_on_backend_error to off, and<br>
&gt;&gt;&gt; &gt;       configures health checks;<br>
&gt;&gt;&gt; &gt;       3. for this fix in code an unwanted check was removed in main.c,<br>
&gt;&gt;&gt; &gt;       after health check failed if DISALLOW_TO_FAILOVER was set for<br>
&gt;&gt;&gt; backend<br>
&gt;&gt;&gt; &gt;       failover would have been always prevented, even when one<br>
&gt;&gt;&gt; &gt; configures health<br>
&gt;&gt;&gt; &gt;       check whose sole purpose is to control failover<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is not acceptable, at least for stable<br>
&gt;&gt;&gt; releases. DISALLOW_TO_FAILOVER and sets fail_over_on_backend_error are<br>
&gt;&gt;&gt; for different purposes. The former is for preventing any failover<br>
&gt;&gt;&gt; including health check. The latter is for write to communication<br>
&gt;&gt;&gt; socket.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; fail_over_on_backend_error = on<br>
&gt;&gt;&gt;                                   # Initiates failover when writing to the<br>
&gt;&gt;&gt;                                   # backend communication socket fails<br>
&gt;&gt;&gt;                                   # This is the same behaviour of<br>
&gt;&gt;&gt; pgpool-II<br>
&gt;&gt;&gt;                                   # 2.2.x and previous releases<br>
&gt;&gt;&gt;                                   # If set to off, pgpool will report an<br>
&gt;&gt;&gt;                                   # error and disconnect the session.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Your patch changes the existing semantics. Another point is,<br>
&gt;&gt;&gt; DISALLOW_TO_FAILOVER allows to control per backend behavior. Your<br>
&gt;&gt;&gt; patch breaks it.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;       2. fix for health check bug<br>
&gt;&gt;&gt; &gt;       1. health check timeout was not being respected in all conditions<br>
&gt;&gt;&gt; &gt;       (icmp host unreachable messages dropped for security reasons, or<br>
&gt;&gt;&gt; &gt; no active<br>
&gt;&gt;&gt; &gt;       network component to send those message)<br>
&gt;&gt;&gt; &gt;       2. for this fix in code (main.c, pool.h, pool_connection_pool.c)<br>
&gt;&gt;&gt; inet<br>
&gt;&gt;&gt; &gt;       connections have been made to be non blocking, and during<br>
&gt;&gt;&gt; connection<br>
&gt;&gt;&gt; &gt;       retries status of now global health_check_timer_expired variable<br>
&gt;&gt;&gt; is being<br>
&gt;&gt;&gt; &gt;       checked<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This seems good. But I need more investigation. For example, your<br>
&gt;&gt;&gt; patch set non blocking to sockets but never revert back to blocking.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;       3. fix for failback bug<br>
&gt;&gt;&gt; &gt;       1. in raw mode, after failback (through pcp_attach_node) standby<br>
&gt;&gt;&gt; &gt;       node/backend would remain in invalid state<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It turned out that even failover was bugged. The status was not set to<br>
&gt;&gt;&gt; CON_DOWN. This leaves the status to CON_CONNECT_WAIT and it prevented<br>
&gt;&gt;&gt; failback from returning to normal state. I fixed this on master branch.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; (it would be in CON_UP, so on<br>
&gt;&gt;&gt; &gt;       failover after failback pgpool would not be able to connect to<br>
&gt;&gt;&gt; standby as<br>
&gt;&gt;&gt; &gt;       get_next_master_node expects standby nodes/backends in raw mode<br>
&gt;&gt;&gt; to be in<br>
&gt;&gt;&gt; &gt;       CON_CONNECT_WAIT state when finding next master node)<br>
&gt;&gt;&gt; &gt;       2. for this fix in code, when in raw mode on failback status of<br>
&gt;&gt;&gt; all<br>
&gt;&gt;&gt; &gt;       nodes/backends with CON_UP state is set to CON_CONNECT_WAIT -<br>
&gt;&gt;&gt; &gt; all children<br>
&gt;&gt;&gt; &gt;       are restarted anyway<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Neither of these fixes changes expected behaviour of related features so<br>
&gt;&gt;&gt; &gt; there are no changes to the documentation.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Kind regards,<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Stevo.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; 2012/1/24 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; Additional testing confirmed that this fix ensures health check timer<br>
&gt;&gt;&gt; &gt;&gt; gets<br>
&gt;&gt;&gt; &gt;&gt; &gt; respected (should I create a ticket on some issue tracker? send<br>
&gt;&gt;&gt; &gt;&gt; cumulative<br>
&gt;&gt;&gt; &gt;&gt; &gt; patch with all changes to have it accepted?).<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; We have problem with Mantis bug tracker and decided to stop using<br>
&gt;&gt;&gt; &gt;&gt; it(unless someone volunteers to fix it). Please send cumulative patch<br>
&gt;&gt;&gt; &gt;&gt; againt master head to this list so that we will be able to look<br>
&gt;&gt;&gt; &gt;&gt; into(be sure to include English doc changes).<br>
&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&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;<br>
&gt;&gt;&gt; &gt;&gt; &gt; Problem is that with all the testing another issue has been<br>
&gt;&gt;&gt; encountered,<br>
&gt;&gt;&gt; &gt;&gt; &gt; now with pcp_attach_node.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; With pgpool in raw mode and two backends in postgres 9 streaming<br>
&gt;&gt;&gt; &gt;&gt; &gt; replication, when backend0 fails, after health checks retries pgpool<br>
&gt;&gt;&gt; &gt;&gt; calls<br>
&gt;&gt;&gt; &gt;&gt; &gt; failover command and degenerates backend0, backend1 gets promoted to<br>
&gt;&gt;&gt; new<br>
&gt;&gt;&gt; &gt;&gt; &gt; master, pgpool can connect to that master, and two backends are in<br>
&gt;&gt;&gt; pgpool<br>
&gt;&gt;&gt; &gt;&gt; &gt; state 3/2. And this is ok and expected.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; Once backend0 is recovered, it&#39;s attached back to pgpool using<br>
&gt;&gt;&gt; &gt;&gt; &gt; pcp_attach_node, and pgpool will show two backends in state 2/2 (in<br>
&gt;&gt;&gt; logs<br>
&gt;&gt;&gt; &gt;&gt; &gt; and in show pool_nodes; query) with backend0 taking all the load (raw<br>
&gt;&gt;&gt; &gt;&gt; &gt; mode). If after that recovery and attachment of backend0 pgpool is<br>
&gt;&gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt; &gt; restarted, and afetr some time backend0 fails again, after health<br>
&gt;&gt;&gt; check<br>
&gt;&gt;&gt; &gt;&gt; &gt; retries backend0 will get degenerated, failover command will get<br>
&gt;&gt;&gt; called<br>
&gt;&gt;&gt; &gt;&gt; &gt; (promotes standby to master), but pgpool will not be able to connect<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt; backend1 (regardless if unix or inet sockets are used for backend1).<br>
&gt;&gt;&gt; Only<br>
&gt;&gt;&gt; &gt;&gt; &gt; if pgpool is restarted before second (complete) failure of backend0,<br>
&gt;&gt;&gt; will<br>
&gt;&gt;&gt; &gt;&gt; &gt; pgpool be able to connect to backend1.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; Following code, pcp_attach_node (failback of backend0) will actually<br>
&gt;&gt;&gt; &gt;&gt; &gt; execute same code as for failover. Not sure what, but that failover<br>
&gt;&gt;&gt; does<br>
&gt;&gt;&gt; &gt;&gt; &gt; something with backend1 state or in memory settings, so that pgpool<br>
&gt;&gt;&gt; can<br>
&gt;&gt;&gt; &gt;&gt; no<br>
&gt;&gt;&gt; &gt;&gt; &gt; longer connect to backend1. Is this a known issue?<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; 2012/1/20 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; Key file was missing from that commit/change - pool.h where<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; health_check_timer_expired was made global. Included now attached<br>
&gt;&gt;&gt; patch.<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; 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/20 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Using exit_request was wrong and caused a bug. 4th patch needed -<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; health_check_timer_expired is global now so it can be verified if<br>
&gt;&gt;&gt; it<br>
&gt;&gt;&gt; &gt;&gt; was<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; set to 1 outside of main.c<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; Kind 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; 2012/1/19 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; Using exit_code was not wise. Tested and encountered a case where<br>
&gt;&gt;&gt; this<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; pool_connection_pool.c connect_inet_domain_socket_by_port<br>
&gt;&gt;&gt; function to<br>
&gt;&gt;&gt; &gt;&gt; know<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; that health check timer has expired (set to 1). Any ideas?<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;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; 2012/1/19 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Tatsuo,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Here are the patches which should be applied to current pgpool<br>
&gt;&gt;&gt; head<br>
&gt;&gt;&gt; &gt;&gt; for<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; fixing this issue:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-health-check-timeout.patch<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-health-check-retrying-after-failover.patch<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Fixes-clearing-exitrequest-flag.patch<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Quirk I noticed in logs was resolved as well - after failover<br>
&gt;&gt;&gt; pgpool<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; would perform healthcheck and report it is doing (max retries +<br>
&gt;&gt;&gt; 1) th<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; health check which was confusing. Rather I&#39;ve adjusted that it<br>
&gt;&gt;&gt; does<br>
&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; disallow failover, failover on backend failure disabled, and<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &gt;&gt; checks<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; configured with retries (30sec interval, 5sec timeout, 2 retries,<br>
&gt;&gt;&gt; &gt;&gt; 10sec<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; delay between retries).<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Kind regards,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Stevo.<br>
&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;&gt; 2012/1/16 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Here is pgpool.log, strace.out, and pgpool.conf when I tested<br>
&gt;&gt;&gt; with<br>
&gt;&gt;&gt; &gt;&gt; my<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; latest patch for health check timeout applied. It works well,<br>
&gt;&gt;&gt; &gt;&gt; except for<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; single quirk, after failover completed in log files it was<br>
&gt;&gt;&gt; reported<br>
&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 3rd health check retry was done (even though just 2 are<br>
&gt;&gt;&gt; configured,<br>
&gt;&gt;&gt; &gt;&gt; see<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; pgpool.conf) and that backend has returned to healthy state.<br>
&gt;&gt;&gt; That<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; interesting part from log file follows:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45<br>
&gt;&gt;&gt; DEBUG: pid<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: retrying 3 th health checking<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45<br>
&gt;&gt;&gt; DEBUG: pid<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; Jan 16 01:31:45 sslavic pgpool[1163]: 2012-01-16 01:31:45 LOG:<br>
&gt;&gt;&gt;   pid<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; Jan 16 01:32:15 sslavic pgpool[1163]: 2012-01-16 01:32:15<br>
&gt;&gt;&gt; DEBUG: pid<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 1163: starting health checking<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Jan 16 01:32:15 sslavic pgpool[1163]: 2012-01-16 01:32:15<br>
&gt;&gt;&gt; DEBUG: pid<br>
&gt;&gt;&gt; &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;&gt;&gt;&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; As can be seen in pgpool.conf, there is only one backend<br>
&gt;&gt;&gt; configured.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; pgpool did failover well after health check max retries has been<br>
&gt;&gt;&gt; &gt;&gt; reached<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; (pgpool just degraded that single backend to 3, and restarted<br>
&gt;&gt;&gt; child<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; processes).<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; expected. Except those couple weird log entries, everything<br>
&gt;&gt;&gt; seems<br>
&gt;&gt;&gt; &gt;&gt; to be ok.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Maybe that quirk was caused by single backend only configuration<br>
&gt;&gt;&gt; &gt;&gt; corner<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; case. Will try tomorrow if it occurs on dual backend<br>
&gt;&gt;&gt; configuration.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 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;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; 2012/1/16 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</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; Hello Tatsuo,<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; Unfortunately, with your patch when A is on<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; count is<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Nenad&#39;s patch allows failover to be triggered only by health<br>
&gt;&gt;&gt; check.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Here is the patch which includes Nenad&#39;s fix but also fixes<br>
&gt;&gt;&gt; issue<br>
&gt;&gt;&gt; &gt;&gt; with<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; - in pool_connection_pool.c connect_inet_domain_socket_by_port<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; function, before trying to connect, file descriptor is set to<br>
&gt;&gt;&gt; &gt;&gt; non-blocking<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; mode, and also non-blocking mode error codes are handled,<br>
&gt;&gt;&gt; &gt;&gt; EINPROGRESS and<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; EALREADY (please verify changes here, especially regarding<br>
&gt;&gt;&gt; closing<br>
&gt;&gt;&gt; &gt;&gt; fd)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - in main.c health_check_timer_handler has been changed to<br>
&gt;&gt;&gt; signal<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; exit_request to health check initiated<br>
&gt;&gt;&gt; &gt;&gt; connect_inet_domain_socket_by_port<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; function call (please verify this, maybe there is a better way<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; check<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; from connect_inet_domain_socket_by_port if in<br>
&gt;&gt;&gt; &gt;&gt; health_check_timer_expired<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; has been set to 1)<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; These changes will practically make connect attempt to be<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; non-blocking and repeated until:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; - connection is made, or<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; - health check timer alarm has been raised, or<br>
&gt;&gt;&gt; &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;&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;&gt;&gt; Kind regards,<br>
&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;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&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;&gt;&gt;&gt; Ok, let me clarify use cases regarding failover.<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; Currently there are three parameters:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a) health_check<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; c) fail_over_on_backend_error<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; Source of errors which can trigger failover are 1)health check<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2)write<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to backend socket 3)read backend from socket. I represent<br>
&gt;&gt;&gt; each 1)<br>
&gt;&gt;&gt; &gt;&gt; as<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; a = on, b = off, c = on<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; 2) trigger failover only when B or C is error<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; Impossible. Because C error always triggers failover.<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; 4) trigger failover only when C is error<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; Impossible. Because C error always triggers failover.<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; 6) never trigger failover<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; However I think we should disable failover if<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; in case of reading data from backend. This should have been<br>
&gt;&gt;&gt; &gt;&gt; done<br>
&gt;&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; &gt;&gt; DISALLOW_TO_FAILOVER was introduced because this is exactly<br>
&gt;&gt;&gt; &gt;&gt; what<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER tries to accomplish. What do you<br>
&gt;&gt;&gt; think?<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; 1) trigger failover if A or B or C is error<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; a = off, b = off, c = on<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; 3) trigger failover only when B is error<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; a = off, b = off, c = off<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; 5) trigger failover only when A is error(Stevo wants this)<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; a = off, b = on, c = off<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; So it seems my patch will solve all the problems including<br>
&gt;&gt;&gt; yours.<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; --<br>
&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; SRA OSS, Inc. Japan<br>
&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; 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;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; confusion by<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; With your patch or without it, it is not possible to<br>
&gt;&gt;&gt; failover<br>
&gt;&gt;&gt; &gt;&gt; only<br>
&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; health check (max retries) failure. With Nenad&#39;s patch, that<br>
&gt;&gt;&gt; &gt;&gt; part<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; works ok<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; and I think that patch is semantically ok - failover occurs<br>
&gt;&gt;&gt; even<br>
&gt;&gt;&gt; &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; DISALLOW_TO_FAILOVER is set for backend but only when health<br>
&gt;&gt;&gt; &gt;&gt; check<br>
&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; configured too. Configuring health check without failover on<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; failed health<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt; check has no purpose. Also health check configured with<br>
&gt;&gt;&gt; allowed<br>
&gt;&gt;&gt; &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; any condition other than health check (max retries) failure<br>
&gt;&gt;&gt; has<br>
&gt;&gt;&gt; &gt;&gt; no<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; purpose.<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; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">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; fail_over_on_backend_error has different meaning from<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt;  communication, pgpool-II will trigger the fail over<br>
&gt;&gt;&gt; procedure<br>
&gt;&gt;&gt; &gt;&gt; .<br>
&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;  is the same behavior as of pgpool-II 2.2.x or earlier. If<br>
&gt;&gt;&gt; set<br>
&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt;  false, pgpool will report an error and disconnect the<br>
&gt;&gt;&gt; session.<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; This means that if pgpool failed to read from backend, it<br>
&gt;&gt;&gt; will<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; trigger<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; unconditionaly<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; DISALLOW_TO_FAILOVER set<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; done<br>
&gt;&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; &gt;&gt; DISALLOW_TO_FAILOVER was introduced because this is exactly<br>
&gt;&gt;&gt; &gt;&gt; what<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; DISALLOW_TO_FAILOVER tries to accomplish. What do you<br>
&gt;&gt;&gt; think?<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; For a moment I thought we could have set<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; off,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; and have backends set with ALLOW_TO_FAILOVER flag. But<br>
&gt;&gt;&gt; then I<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; code.<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; In child.c there is a loop child process goes through in<br>
&gt;&gt;&gt; its<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; lifetime.<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; fatal error condition occurs before child process exits<br>
&gt;&gt;&gt; it<br>
&gt;&gt;&gt; &gt;&gt; will<br>
&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; notice_backend_error which will call<br>
&gt;&gt;&gt; degenerate_backend_set<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; take into account fail_over_on_backend_error is set to<br>
&gt;&gt;&gt; off,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; causing<br>
&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; to be degenerated and failover to occur. That&#39;s why we<br>
&gt;&gt;&gt; have<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; with DISALLOW_TO_FAILOVER but with our patch applied,<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; cause failover to occur as expected.<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 enough just to modify<br>
&gt;&gt;&gt; &gt;&gt; degenerate_backend_set,<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; fail_over_on_backend_error into account just like it<br>
&gt;&gt;&gt; already<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; DISALLOW_TO_FAILOVER into account.<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/15 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">sslavic@gmail.com</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; Yes and that behaviour which you describe as expected,<br>
&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; want. We want pgpool to degrade backend0 and failover<br>
&gt;&gt;&gt; when<br>
&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; max<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; health check retries have failed, and to failover only<br>
&gt;&gt;&gt; in<br>
&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; sooner e.g. connection/child error condition, but as<br>
&gt;&gt;&gt; soon as<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; check retries have been attempted.<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; Maybe examples will be more clear.<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; Imagine two nodes (node 1 and node 2). On each node a<br>
&gt;&gt;&gt; single<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; a<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; their<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; Two backends are configured in postgres native streaming<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; pgpools are used in raw mode. Both pgpools have same<br>
&gt;&gt;&gt; &gt;&gt; backend as<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; and same backend as backend1.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; initial state: both backends are up and pgpool can<br>
&gt;&gt;&gt; access<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; connect to their pgpool and do their work on master<br>
&gt;&gt;&gt; backend,<br>
&gt;&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;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; backends are<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - temporary network outage happens between pgpool on<br>
&gt;&gt;&gt; node 2<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - error condition is reported by child process, and<br>
&gt;&gt;&gt; since<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; ALLOW_TO_FAILOVER is set, pgpool performs failover<br>
&gt;&gt;&gt; without<br>
&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; chance to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; pgpool health check retries to control whether backend<br>
&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &gt;&gt; just<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; inaccessible<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - failover command on node 2 promotes standby backend<br>
&gt;&gt;&gt; to a<br>
&gt;&gt;&gt; &gt;&gt; new<br>
&gt;&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;&gt; &gt;&gt; split brain occurs, with two masters<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;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; backends are<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - temporary network outage happens between pgpool on<br>
&gt;&gt;&gt; node 2<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - error condition is reported by child process, and<br>
&gt;&gt;&gt; since<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; failover<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0<br>
&gt;&gt;&gt; condition,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&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; it&#39;s not accessible, there will be no health check<br>
&gt;&gt;&gt; retries<br>
&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; DISALLOW_TO_FAILOVER is set, no failover occurs ever<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;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; backends<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - temporary network outage happens between pgpool on<br>
&gt;&gt;&gt; node 2<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - error condition is reported by child process, and<br>
&gt;&gt;&gt; since<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; failover<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0<br>
&gt;&gt;&gt; condition,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&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; it&#39;s not accessible, health check retries happen, and<br>
&gt;&gt;&gt; even<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; retries, no failover happens since failover is<br>
&gt;&gt;&gt; disallowed<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;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 4th expected behaviour, pgpool 3.1.1 + patch we sent,<br>
&gt;&gt;&gt; and<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; configured with DISALLOW_TO_FAILOVER<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - temporary network outage happens between pgpool on<br>
&gt;&gt;&gt; node 2<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; - error condition is reported by child process, and<br>
&gt;&gt;&gt; since<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; failover<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0<br>
&gt;&gt;&gt; condition,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&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; it&#39;s not accessible, health check retries happen,<br>
&gt;&gt;&gt; before a<br>
&gt;&gt;&gt; &gt;&gt; max<br>
&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; network condition is cleared, retry happens, and<br>
&gt;&gt;&gt; backend0<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; master, no failover occurs, temporary network issue did<br>
&gt;&gt;&gt; not<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; brain<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - after some time, temporary network outage happens<br>
&gt;&gt;&gt; again<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; on node 2 and backend0<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - error condition is reported by child process, and<br>
&gt;&gt;&gt; since<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; failover<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; - health check gets a chance to check backend0<br>
&gt;&gt;&gt; condition,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; determines<br>
&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; it&#39;s not accessible, health check retries happen, after<br>
&gt;&gt;&gt; max<br>
&gt;&gt;&gt; &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; &gt;&gt; backend0 is still not accessible, failover happens,<br>
&gt;&gt;&gt; standby<br>
&gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; new<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; and backend0 is degraded<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; Kind regards,<br>
&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;<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; 2012/1/15 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&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; &gt;&gt;&gt; In my test evironment, the patch works as expected. I<br>
&gt;&gt;&gt; have<br>
&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; backends. Health check retry conf is as follows:<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; health_check_max_retries = 3<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; /home/t-ishii/work/<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:20 LOG:   pid 21411: pgpool-II<br>
&gt;&gt;&gt; &gt;&gt; successfully<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; version 3.2alpha1 (hatsuiboshi)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012-01-15 09:17:20 LOG:   pid 21411:<br>
&gt;&gt;&gt; find_primary_node:<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; id<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; -- backend1 was shutdown<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-01-15 09:17:50 ERROR: pid 21445:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &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;&gt; check_replication_time_lag: could<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; sr_check_password<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; -- health check failed<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-01-15 09:17:50 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; -- start retrying<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:51 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:51 LOG:   pid 21411: health check<br>
&gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:52 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:52 LOG:   pid 21411: health check<br>
&gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:17:53 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &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;&gt;&gt;&gt; failover is<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; because failover is disallowed<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; -- after 3 retries, pgpool wanted to failover, but<br>
&gt;&gt;&gt; gave up<br>
&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; DISALLOW_TO_FAILOVER is set for backend1<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-01-15 09:18:00 ERROR: pid 21445:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &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;&gt; check_replication_time_lag: could<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; sr_check_password<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:18:03 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:18:03 LOG:   pid 21411: health check<br>
&gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &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;&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; &gt;&gt;&gt; connect() failed to /tmp/.s.PGSQL.11001: No such file<br>
&gt;&gt;&gt; or<br>
&gt;&gt;&gt; &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; &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;&gt; make_persistent_db_connection:<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:18:04 ERROR: pid 21411: health check<br>
&gt;&gt;&gt; failed.<br>
&gt;&gt;&gt; &gt;&gt; 1<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; /tmp<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; 2012-01-15 09:18:04 LOG:   pid 21411: health check<br>
&gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; retrying<br>
&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; returned to healthy state<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; checking.<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; using backend1<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; Tatsuo Ishii<br>
&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; 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; 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;<br>
&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;<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; this<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; change<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; work for us. We need to set disallow failover to<br>
&gt;&gt;&gt; prevent<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; child<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; lose<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; connection or<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; can not connect), and still have pgpool perform<br>
&gt;&gt;&gt; failover<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; health check (if configured, after max retries<br>
&gt;&gt;&gt; threshold<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; reached).<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; Maybe it would be best to add an extra value for<br>
&gt;&gt;&gt; &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;&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; &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;&gt;&gt; &gt; It should behave same as DISALLOW_TO_FAILOVER is set,<br>
&gt;&gt;&gt; &gt;&gt; with<br>
&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;&gt;&gt; difference<br>
&gt;&gt;&gt; &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)<br>
&gt;&gt;&gt; has<br>
&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; unlike<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; DISALLOW_TO_FAILOVER, this new flag should allow<br>
&gt;&gt;&gt; failover<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; case<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Without this change health check (especially health<br>
&gt;&gt;&gt; check<br>
&gt;&gt;&gt; &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; &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; make much sense - child error is more likely to<br>
&gt;&gt;&gt; occur on<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; backend failure then health check and will or will<br>
&gt;&gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt; cause<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; occur depending on backend flag, without giving<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; a<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; risking split<br>
&gt;&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;&gt; &gt;&gt;&gt; &gt; situation with two masters just because of temporary<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; hiccup.<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; Our main problem remains though with the health check<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; being<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; Nenad<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; you<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; Stevo.<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; 2012/1/13 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">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;<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; Yes, checking DISALLOW_TO_FAILOVER before retrying<br>
&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; However, after retry count over, we should check<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; think.<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; --<br>
&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; 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; 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; 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;<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; (health<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; failover<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; when<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; standby<br>
&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; promoted to new master. Here is pgpool.conf file<br>
&gt;&gt;&gt; and a<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; patch<br>
&gt;&gt;&gt; &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; &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; We have to have DISALLOW_TO_FAILOVER set for the<br>
&gt;&gt;&gt; &gt;&gt; backend<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; child<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; process that detects condition that<br>
&gt;&gt;&gt; master/backend0 is<br>
&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; available, if<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; backend without<br>
&gt;&gt;&gt; &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; &gt;&gt; &gt; health check a chance to retry. We need health<br>
&gt;&gt;&gt; check<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; because<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; temporary<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;&gt; &gt; glitches to the remote site where master is, or<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; deliberate<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; of<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; other on<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; -<br>
&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; both<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; going<br>
&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt;&gt; &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; &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; checks and ultimately the failover) and we don&#39;t<br>
&gt;&gt;&gt; want<br>
&gt;&gt;&gt; &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;&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; promoted as easily to a new master, to prevent<br>
&gt;&gt;&gt; &gt;&gt; temporary<br>
&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;&gt; conditions<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; split<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; two<br>
&gt;&gt;&gt; &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; &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; But then, with DISALLOW_TO_FAILOVER set, without<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &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; &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; will not retry and will thus give only one chance<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &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; &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; check ever occurs before child process failure to<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; backend),<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt; rendering retry settings effectively to be<br>
&gt;&gt;&gt; ignored.<br>
&gt;&gt;&gt; &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;&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; patch<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; while<br>
&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; processes<br>
&gt;&gt;&gt; &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; &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; &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; I don&#39;t think, but I could be wrong, that this<br>
&gt;&gt;&gt; patch<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; influences<br>
&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; behavior we&#39;re seeing with unwanted health check<br>
&gt;&gt;&gt; &gt;&gt; attempt<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; Also,<br>
&gt;&gt;&gt; &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<br>
&gt;&gt;&gt; some<br>
&gt;&gt;&gt; &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;&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; built<br>
&gt;&gt;&gt; &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; &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/12 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">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; I have accepted the moderation request. Your post<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; shortly.<br>
&gt;&gt;&gt; &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;&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;&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; Here is the log file and strace output file<br>
&gt;&gt;&gt; (this<br>
&gt;&gt;&gt; &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; &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; &gt;&gt; &gt; didn&#39;t know about 200KB constraint on post size<br>
&gt;&gt;&gt; &gt;&gt; which<br>
&gt;&gt;&gt; &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;&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; &gt;&gt; &gt; approval). Timings configured are 30sec health<br>
&gt;&gt;&gt; &gt;&gt; check<br>
&gt;&gt;&gt; &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; &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 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; &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; It takes a lot more than 5sec from started<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; sleeping<br>
&gt;&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;&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;&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; Seen in code (main.x, health_check() function),<br>
&gt;&gt;&gt; &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;&gt; attempt<br>
&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 inner retry (first with postgres<br>
&gt;&gt;&gt; database<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; template1)<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; that part doesn&#39;t seem to be interrupted by<br>
&gt;&gt;&gt; alarm.<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; 2012/1/12 Stevo Slavić &lt;<a href="mailto:sslavic@gmail.com">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; &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; Here is the log file and strace output file.<br>
&gt;&gt;&gt; &gt;&gt; Timings<br>
&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; are<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; health check interval, 5sec timeout, and 2<br>
&gt;&gt;&gt; retries<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; retry<br>
&gt;&gt;&gt; &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;&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; It takes a lot more than 5sec from started<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; sleeping<br>
&gt;&gt;&gt; &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;&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;&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; Seen in code (main.x, health_check()<br>
&gt;&gt;&gt; function),<br>
&gt;&gt;&gt; &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;&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;&gt; &gt;&gt; there is inner retry (first with postgres<br>
&gt;&gt;&gt; database<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; template1)<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; that part doesn&#39;t seem to be interrupted by<br>
&gt;&gt;&gt; alarm.<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; 2012/1/11 Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">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;<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; Ok, I will do it. In the mean time you could<br>
&gt;&gt;&gt; use<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; -p<br>
&gt;&gt;&gt; &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; &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; &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; 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; 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; English:<br>
&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; 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;<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, got the info - key point is that ip<br>
&gt;&gt;&gt; &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; &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; &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;&gt;&gt; &gt; reasons. Rules in iptables are not<br>
&gt;&gt;&gt; important,<br>
&gt;&gt;&gt; &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;&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; stopped,<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; 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;&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;&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; Here are the steps to reproduce (kudos to<br>
&gt;&gt;&gt; my<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; colleague<br>
&gt;&gt;&gt; &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;&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; &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;&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;&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; 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;&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;&gt;&gt; &gt; 2.) create IP alias on some interface (and<br>
&gt;&gt;&gt; have<br>
&gt;&gt;&gt; &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; &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;&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;     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;&gt;&gt; &gt; 3.) set backend_hostname0 to<br>
&gt;&gt;&gt; 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;&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;&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;&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;&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; &gt; Here is the interesting part in pgpool log<br>
&gt;&gt;&gt; &gt;&gt; after<br>
&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;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358:<br>
&gt;&gt;&gt; starting<br>
&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; 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;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358:<br>
&gt;&gt;&gt; &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; &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; &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;&gt;&gt; &gt; 2012-01-11 17:38:04 DEBUG: pid 24358:<br>
&gt;&gt;&gt; &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; &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; &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;&gt;&gt; &gt; 2012-01-11 17:38:34 DEBUG: pid 24358:<br>
&gt;&gt;&gt; starting<br>
&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; 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;&gt;&gt; &gt; 2012-01-11 17:38:34 DEBUG: pid 24358:<br>
&gt;&gt;&gt; &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; &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; &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;&gt;&gt; &gt; 2012-01-11 17:41:43 DEBUG: pid 24358:<br>
&gt;&gt;&gt; &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; &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; &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;&gt;&gt; &gt; 2012-01-11 17:41:46 ERROR: pid 24358:<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; 0<br>
&gt;&gt;&gt; &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;&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; 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;&gt;&gt; &gt; 2012-01-11 17:41:46 LOG:   pid 24358:<br>
&gt;&gt;&gt; health<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; sleep<br>
&gt;&gt;&gt; &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;&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;&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;&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; That pgpool was configured with health<br>
&gt;&gt;&gt; check<br>
&gt;&gt;&gt; &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; &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; 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;&gt;&gt; &gt; timeout, and 10sec retry delay with 2 max<br>
&gt;&gt;&gt; &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;&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; Making use of libpq instead for connecting<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; db<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; checks<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; should resolve it, but you&#39;ll best<br>
&gt;&gt;&gt; determine<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; exactly<br>
&gt;&gt;&gt; &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;&gt;&gt; &gt; blocked waiting. Btw, psql with<br>
&gt;&gt;&gt; &gt;&gt; PGCONNECT_TIMEOUT<br>
&gt;&gt;&gt; &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;&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; 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;&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; 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; 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;<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 Wed, Jan 11, 2012 at 11:15 AM, Stevo<br>
&gt;&gt;&gt; Slavić<br>
&gt;&gt;&gt; &gt;&gt; &lt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:sslavic@gmail.com">sslavic@gmail.com</a><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; &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;<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; 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;<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; Did you restart iptables after adding<br>
&gt;&gt;&gt; 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;&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;<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 11:12 AM, Stevo<br>
&gt;&gt;&gt; &gt;&gt; Slavić &lt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="mailto:sslavic@gmail.com">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; &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; Looking into this to verify if these are<br>
&gt;&gt;&gt; all<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; changes<br>
&gt;&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; 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; &gt;&gt;&gt; port unreachable message silently<br>
&gt;&gt;&gt; rejected<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; (suspecting<br>
&gt;&gt;&gt; &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;&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; &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; &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; Just to clarify it&#39;s not a problem that<br>
&gt;&gt;&gt; host<br>
&gt;&gt;&gt; &gt;&gt; is<br>
&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; detected<br>
&gt;&gt;&gt; &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; &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; to be down, but the timing when that<br>
&gt;&gt;&gt; &gt;&gt; happens. On<br>
&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; 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; 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; &gt;&gt;&gt; reproduced pgpool as part of health check<br>
&gt;&gt;&gt; &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;&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; connect<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; backend and hangs for tcp timeout<br>
&gt;&gt;&gt; instead of<br>
&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; interrupted<br>
&gt;&gt;&gt; &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; &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; alarm. Can you verify/confirm please the<br>
&gt;&gt;&gt; &gt;&gt; health<br>
&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; retry<br>
&gt;&gt;&gt; &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; &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; &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; &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; 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; 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;<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; On Wed, Jan 11, 2012 at 10:50 AM, Tatsuo<br>
&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">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;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;<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; 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;&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; --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; on the host where pgpoo is running. And<br>
&gt;&gt;&gt; pull<br>
&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; cable<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; backend0 host network interface. Pgpool<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; host<br>
&gt;&gt;&gt; &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;&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;&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;&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; 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; 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; English:<br>
&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; 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;<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; Backend is not destination of this<br>
&gt;&gt;&gt; &gt;&gt; message,<br>
&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; host<br>
&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; and<br>
&gt;&gt;&gt; &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;&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;&gt;&gt; &gt; want it to ever get it. With command<br>
&gt;&gt;&gt; I&#39;ve<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; rule<br>
&gt;&gt;&gt; &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;&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;&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;&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;&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; 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; 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;<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; On Wed, Jan 11, 2012 at 10:38 AM,<br>
&gt;&gt;&gt; Tatsuo<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; <a href="mailto:ishii@postgresql.org">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; 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;<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 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;&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; Do following on the host where<br>
&gt;&gt;&gt; pgpool is<br>
&gt;&gt;&gt; &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;&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; # iptables -A FORWARD -j REJECT<br>
&gt;&gt;&gt; &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; &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;&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;&gt; &gt;&gt; (133.137.177.124 is the host where<br>
&gt;&gt;&gt; &gt;&gt; backend<br>
</div></div>&gt;&gt;&gt; &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; &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;&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; Pull network cable from backend0 host<br>
<div class="im">&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; interface.<br>
&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; &gt;&gt;&gt;&gt; &gt;&gt; detected the host being down as<br>
</div><div class="im">&gt;&gt;&gt; expected.<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; missing<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; &gt;&gt; something?<br>
</div><div class="im">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&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; 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; 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; English:<br>
&gt;&gt;&gt; &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; 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;<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; 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; &gt;<br>
</div><div class="im">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&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;&gt; &gt;&gt; configure<br>
&gt;&gt;&gt; &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; &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;&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;&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;&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; &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; &gt;&gt; &gt;<br>
</div><div class="im">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&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;&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; &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; &gt;&gt; &gt;<br>
</div><div class="im">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&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;&gt; &gt;&gt; health<br>
&gt;&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; and<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; configured,<br>
</div>&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&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;&gt; &gt;&gt; backend0<br>
&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; network<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; 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; &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; 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; &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; &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; On Wed, Jan 11, 2012 at 6:27 AM,<br>
&gt;&gt;&gt; Tatsuo<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; <a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a><br>
<div><div class="h5">&gt;&gt;&gt; &gt;&gt; &gt;&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; 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; &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; I want to try to test the<br>
&gt;&gt;&gt; situation<br>
&gt;&gt;&gt; &gt;&gt; you<br>
&gt;&gt;&gt; &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;&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; &gt;&gt; &gt; When system is configured for<br>
&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; reasons<br>
&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; 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; 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;&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; &gt;&gt; &gt; host unreachable messages,<br>
&gt;&gt;&gt; even<br>
&gt;&gt;&gt; &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; &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;&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; But I don&#39;t know how to do it. I<br>
&gt;&gt;&gt; &gt;&gt; pulled<br>
&gt;&gt;&gt; &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; &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; cable<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; 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;&gt; &gt;&gt; pgpool detected it as expected.<br>
&gt;&gt;&gt; Also I<br>
&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; the<br>
&gt;&gt;&gt; &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; &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;&gt; &gt;&gt; PostgreSQL is running on to<br>
&gt;&gt;&gt; disable<br>
&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 5432<br>
&gt;&gt;&gt; &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;&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; 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;&gt; &gt;&gt; connect(2) returned EHOSTUNREACH<br>
&gt;&gt;&gt; (No<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; host)<br>
&gt;&gt;&gt; &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;&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;&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;&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;&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; Could you please instruct me?<br>
</div></div><div class="im">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&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; 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;&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;&gt; English:<br>
&gt;&gt;&gt; &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;&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;&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; &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; &gt;&gt; &gt;<br>
</div><div><div class="h5">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&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; &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; &gt; I&#39;m not sure what exactly is<br>
&gt;&gt;&gt; &gt;&gt; blocking,<br>
&gt;&gt;&gt; &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; &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; 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;&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; &gt;&gt; &gt; suspect it is the part where a<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; made<br>
&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; the<br>
&gt;&gt;&gt; &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; &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; 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;&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; &gt;&gt; &gt; seem to get interrupted by<br>
&gt;&gt;&gt; alarm.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Tested<br>
&gt;&gt;&gt; &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;&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; &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;&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; &gt;&gt; &gt; it works really well when<br>
&gt;&gt;&gt; host/ip is<br>
&gt;&gt;&gt; &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;&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;&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;&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; &gt;&gt; &gt; down, but not when backend<br>
&gt;&gt;&gt; host/ip<br>
&gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; could<br>
&gt;&gt;&gt; &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; &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;&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;&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; &gt;&gt; &gt; health check and each retry got<br>
&gt;&gt;&gt; &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; &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;&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;&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; &gt;&gt; &gt; while when just backend is not<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; down)<br>
&gt;&gt;&gt; &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; 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;&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; &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; &gt;&gt; &gt; then initial health check and<br>
&gt;&gt;&gt; all<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; exact to<br>
&gt;&gt;&gt; &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;&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; &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; &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; &gt; PGCONNECT_TIMEOUT is listed as<br>
&gt;&gt;&gt; one<br>
&gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt;&gt; &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;&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;&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;&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; &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;&gt; &gt;&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; <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; &gt;&gt; &gt; There is equivalent parameter in<br>
&gt;&gt;&gt; &gt;&gt; libpq<br>
&gt;&gt;&gt; &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; &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; &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;<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;<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;<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;<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;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&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;&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; &gt; At the beginning of that same<br>
&gt;&gt;&gt; page<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; some<br>
&gt;&gt;&gt; &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;&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;&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;&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; &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; &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; &gt;&gt; &gt;<br>
</div></div>&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&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; &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; &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; &gt; On Wed, Jan 11, 2012 at 12:13<br>
<div class="im">&gt;&gt;&gt; AM,<br>
&gt;&gt;&gt; &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;&gt;&gt;&gt; <a href="mailto:ishii@postgresql.org">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;&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; &gt;&gt; &gt;<br>
</div><div><div class="h5">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&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; &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; &gt;&gt; &gt; When system is configured for<br>
&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; reasons<br>
&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; 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; 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;&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; &gt;&gt; &gt; host unreachable messages,<br>
&gt;&gt;&gt; even<br>
&gt;&gt;&gt; &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; &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;&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; &gt;&gt; &gt; socket call will block and<br>
&gt;&gt;&gt; alarm<br>
&gt;&gt;&gt; &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; &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; &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;&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; &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;&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; &gt;&gt; Interesting. So are you saying<br>
&gt;&gt;&gt; that<br>
&gt;&gt;&gt; &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; &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;&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;&gt; &gt;&gt; alarm signal if the system is<br>
&gt;&gt;&gt; &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; &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; 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; &gt;&gt; host unreachable message?<br>
&gt;&gt;&gt; Could you<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; please<br>
&gt;&gt;&gt; &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; &gt;&gt;&gt; me<br>
&gt;&gt;&gt; &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; &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;&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;&gt; &gt;&gt; such that info? (I&#39;m not a<br>
&gt;&gt;&gt; network<br>
&gt;&gt;&gt; &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;&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; &gt;&gt; &gt; Not a C programmer, found<br>
&gt;&gt;&gt; some<br>
&gt;&gt;&gt; &gt;&gt; info<br>
&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; select<br>
&gt;&gt;&gt; &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; &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;&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;&gt; &gt;&gt; with<br>
</div></div>&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&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<br>
&gt;&gt;&gt; it<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; would be best<br>
<div class="HOEnZb"><div class="h5">&gt;&gt;&gt; &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;&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;&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; &gt;&gt; &gt; could be used here for<br>
&gt;&gt;&gt; connection<br>
&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; pgpool<br>
&gt;&gt;&gt; &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; &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;&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; &gt;&gt; &gt; why isn&#39;t it using libpq for<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; healthcheck<br>
&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; 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;&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; &gt;&gt; &gt; PGCONNECT_TIMEOUT would be<br>
&gt;&gt;&gt; &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;&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; &gt;&gt; I don&#39;t think libpq uses<br>
&gt;&gt;&gt; &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;&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;&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;&gt; &gt;&gt; but using libpq instead of<br>
&gt;&gt;&gt; homebrew<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; to<br>
&gt;&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; an<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; 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;&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;&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;&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; &gt;&gt; One question. Are you sure that<br>
&gt;&gt;&gt; &gt;&gt; libpq<br>
&gt;&gt;&gt; &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; &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; the<br>
&gt;&gt;&gt; &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; (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;&gt; &gt;&gt; return destination host<br>
&gt;&gt;&gt; unreachable<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; messages)<br>
&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; 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;&gt; &gt;&gt; PGCONNECT_TIMEOUT?<br>
</div></div><div class="HOEnZb"><div class="h5">&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&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; &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;&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;&gt; &gt;&gt; English:<br>
&gt;&gt;&gt; &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;&gt; &gt;&gt; Japanese:<br>
&gt;&gt;&gt; <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;&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;<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;<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;<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;<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;<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;<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;<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;<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;<br>
&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;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
</div></div></blockquote></div><br>