<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>Tatsuo,<br>
I believe I'll find the real cause of the problem. The logic which fight to now is very complex. Is not a single request but a series of transactions through a single connection. Obviously some&nbsp; messages violate the protocol.<br>
<br>
<br>
Sergey.<br>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Tatsuo Ishii &lt;ishii@sraoss.co.jp&gt;<br>
<b>Sent:</b> Friday, April 7, 2017 9:05:31 AM<br>
<b>To:</b> Sergey Kim<br>
<b>Cc:</b> Boris Voskanov; pgpool-hackers@pgpool.net<br>
<b>Subject:</b> Re: [pgpool-hackers: 2227] Re: [pgpool-committers: 3836] pgpool: Branch refs/heads/bug271 was created</font>
<div>&nbsp;</div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Sergey,<br>
<br>
&gt; Tatsuo,<br>
&gt; <br>
&gt; I'm struggling to reproduce the problem, but can you please take a look at the attached pgpool log.<br>
&gt; The log clearly says that PARSE message and BIND (B) messages were sent to the backend 0.<br>
<br>
Right.<br>
<br>
&gt; 1) The request was identified in Postgres and strace says it waits 'epoll_wait(3':<br>
&gt; <br>
&gt; [root@OAA-a01149b7a559 ~]# sudo -i -u postgres psql --port=15432<br>
&gt; psql (9.6.2)<br>
&gt; Type &quot;help&quot; for help.<br>
&gt; <br>
&gt; postgres=# select * from pg_stat_activity where pid = 29108;<br>
&gt;&nbsp; datid | datname |&nbsp; pid&nbsp; | usesysid | usename | application_name | client_addr | client_hostname | client_port |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; backend_start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xact_start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query_start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; state_change<br>
&gt; | wait_event_type | wait_event | state&nbsp; | backend_xid | backend_xmin |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query<br>
&gt; -------&#43;---------&#43;-------&#43;----------&#43;---------&#43;------------------&#43;-------------&#43;-----------------&#43;-------------&#43;-------------------------------&#43;-------------------------------&#43;-------------------------------&#43;------------------------------<br>
&gt; &#43;-----------------&#43;------------&#43;--------&#43;-------------&#43;--------------&#43;------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
&gt;&nbsp; 16389 | oss&nbsp;&nbsp;&nbsp;&nbsp; | 29108 |&nbsp;&nbsp;&nbsp; 16390 | oss&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 127.0.0.1&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37570 | 2017-04-06 11:33:37.428804&#43;03 | 2017-04-06 11:34:03.018548&#43;03 | 2017-04-06 11:34:03.018738&#43;03 | 2017-04-06 11:34:03.01874&#43;03<br>
&gt; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | active |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1835366 |&nbsp; SELECT 1 FROM ui_locked_users WHERE&nbsp; LOWER(username) = LOWER( $1 ) AND&nbsp; (device_tag IS NULL OR device_tag =&nbsp; $2 ) AND&nbsp; (unlock_on IS NULL OR unlock_on &gt;=&nbsp; $3 )<br>
&gt; (1 row)<br>
&gt; <br>
&gt; 2) The DB application stuck on the execution of SELECT query.&nbsp; It was blocked until the corresponding pgpool process was killed.<br>
&gt; <br>
&gt; 3) Pgpool log is attached.<br>
&gt; <br>
&gt; <br>
&gt; Is it possible that pgpool didn't forward EXECUTE command to postgres?<br>
<br>
Yes, if Pgpool-II is waiting for something from either frontend or<br>
backend.<br>
<br>
&gt; The problem is reproduced reliably if balancing is enabled, but I'm failing to reproduce it in a standalone test so far.<br>
&gt; <br>
&gt; <br>
&gt; Sergey.<br>
&gt; ________________________________<br>
&gt; From: Tatsuo Ishii &lt;ishii@sraoss.co.jp&gt;<br>
&gt; Sent: Thursday, April 6, 2017 3:48 AM<br>
&gt; To: Sergey Kim<br>
&gt; Cc: Boris Voskanov; pgpool-hackers@pgpool.net<br>
&gt; Subject: Re: [pgpool-hackers: 2227] Re: [pgpool-committers: 3836] pgpool: Branch refs/heads/bug271 was created<br>
&gt; <br>
&gt;&gt; Tatsuo,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; the symptoms of the &quot;hanged&quot; pgpool are following:<br>
&gt;&gt; 1) DB applications fail with 2 types of errors:<br>
&gt;&gt;&nbsp;&nbsp; - failed to prepare statement (PARSE)<br>
&gt;&gt;&nbsp;&nbsp; - failed to extract ResultSet - failed selects<br>
&gt;&gt;<br>
&gt;&gt; 2) The problem is reproduced within a single JDBC connection, series of transactions are passed into it before the problem appears.<br>
&gt;&gt;<br>
&gt;&gt; I'm deeply analysed pgpool logs from the series of failures and revealed a sample case (i.e. pgpool process). It's logs are attached.<br>
&gt;&gt; I'm not sure I'm right but it seems the balancing logic is broken it its sequence of messages - how the are processed. I'am triggered by the fact it was sending PARSE messages to the both backends.<br>
&gt; <br>
&gt; Please provide a reproducable test case. I do not see any error<br>
&gt; message in the log.<br>
&gt; <br>
&gt;&gt; P/S: I was trying to attach the debugger to pgpool but I'm failed to detect a piece of code which I should focus at. Also it is a little bit hard to detect a pgpool process which should be debugged.<br>
&gt; <br>
&gt; Use ps to find a pgpool process which shows 'idle' state. Or you could<br>
&gt; set num_init_children to 1. In this case there's only one pgpool child<br>
&gt; process.<br>
&gt; <br>
&gt; Best regards,<br>
&gt; --<br>
&gt; Tatsuo Ishii<br>
&gt; SRA OSS, Inc. Japan<br>
&gt; English: <a href="http://www.sraoss.co.jp/index_en.php">http://www.sraoss.co.jp/index_en.php</a><br>
&gt; Japanese:http://www.sraoss.co.jp<br>
&gt; <br>
&gt;&gt; Sergey.<br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: Sergey Kim<br>
&gt;&gt; Sent: Wednesday, April 5, 2017 1:48 PM<br>
&gt;&gt; To: Tatsuo Ishii<br>
&gt;&gt; Cc: Boris Voskanov; pgpool-hackers@pgpool.net; Sergey Onuchin<br>
&gt;&gt; Subject: Re: [pgpool-hackers: 2227] Re: [pgpool-committers: 3836] pgpool: Branch refs/heads/bug271 was created<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ... also it happens only when balancing is enabled in pgpool.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: Sergey Kim<br>
&gt;&gt; Sent: Wednesday, April 5, 2017 1:34:45 PM<br>
&gt;&gt; To: Tatsuo Ishii<br>
&gt;&gt; Cc: Boris Voskanov; pgpool-hackers@pgpool.net; Sergey Onuchin<br>
&gt;&gt; Subject: Re: [pgpool-hackers: 2227] Re: [pgpool-committers: 3836] pgpool: Branch refs/heads/bug271 was created<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Tatsuo,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; the 2nd day of tests revealed a problem in pgpool which I trying to reproduce in a standalone test.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sometimes PARSE messages hang in pgpool and DB clients hang due to this reason. I'm just wanted to notify you on the problem. I'm fighting to reproduce it artificially.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sergey.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ...the primary message was cut<br>
</div>
</span></font>
</body>
</html>