[pgpool-hackers: 1418] Re: Item #11, torward pgpool-II 3.6

Yugo Nagata nagata at sraoss.co.jp
Mon Feb 22 13:20:30 JST 2016


On Fri, 19 Feb 2016 12:03:12 +0900 (JST)
Tatsuo Ishii <ishii at postgresql.org> wrote:

> Hi,
> 
> I'm working on the item #11:
> 
> http://pgpool.net/mediawiki/index.php/pgpool-II_3.6_development
> 
> Currently pgpool-II kills all child process when fail over (or switch
> over by pcp_detach_node) happens. Of course this leads to
> disconnecting of all existing client connections because the peer
> process which client is connecting is gone. The item #11 is trying to
> mitigate the problem.
> 
> The reason why we need to kill child process was explained in long
> time ago (see attached mails).
> 
> Basically the problem is retrying in TCP/IP stack layer when the
> connection goes wrong by, for example, the network cable is pulled
> out.
> 
> If this is not a problem, pgpool-II just closes the connection to
> broken backend and can continue its work if the particular connection
> is not used in the session, instead of process exiting (if the backend
> is used by the current session, the pgpool process needs to exit of
> course).
> 
> Any idea how to deal with this?

Do you mean if we can distiguish TCP connection failure from othres, we
can eliminate unnecessary proces exiting on failover? 

For example, don't we need to exit processes in the following cases?

a. when using pcp_degenerate_node commend
b. when the backend send ADMIN_SHUTDOWN_ERROR_CODE ("57P01") or
   CRASH_SHUTDOWN_ERROR_CODE "57P02"
c. when we can confirm that there are no problem on TCP connection
   from ping result

Of course, this is the exception when the backend is used by the current session.

> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp


-- 
Yugo Nagata <nagata at sraoss.co.jp>


More information about the pgpool-hackers mailing list