<div dir="ltr">Hi Yugo,<div><br></div><div>Thank you very much for helping! Please allow me to do some cleaning up and send you the dump.</div><div><br></div><div>I&#39;ll also try to reverse the partitioning condition and get back to you soon.</div>


<div><br></div><div><br></div><div>BR,</div><div>Fantix</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Oct 22, 2013 at 6:08 PM, Yugo Nagata <span dir="ltr">&lt;<a href="mailto:nagata@sraoss.co.jp" target="_blank">nagata@sraoss.co.jp</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Thanks for yor providing information. However, I can&#39;t still reproduced<br>
this hang, using the data as folowing;<br>
<br>
test=# select * from my_table ;<br>
 id  | character_id | my_col_one | my_col_two | quality | properties<br>
-----+--------------+------------+------------+---------+------------<br>
   2 |          102 | t          |        200 |    2000 | \x62626262<br>
  22 |          102 | t          |        200 |    2000 | \x62626262<br>
   0 |          100 | t          |         99 |    9999 | \x62626262<br>
  10 |          100 | t          |         99 |    9999 | \x62626262<br>
 100 |          100 | t          |         99 |    9999 | \x62626262<br>
 333 |          103 | t          |        300 |    3000 | \x63636363<br>
  33 |          103 | t          |        300 |    3000 | \x63636363<br>
   3 |          103 | t          |        300 |    3000 | \x63636363<br>
   1 |          101 | t          |        100 |    1000 | \x62626262<br>
<br>
<br>
I can&#39;t understand why the hang occurs when only caracter_id is even number.<br>
Maybe, contents of your &#39;my_table&#39; or backend server #0 which receives<br>
data of even charcter_id.<br>
<br>
So, could you please me contens of &#39;my_table&#39; using which you can<br>
reproduce the hang in your environment?<br>
<br>
In addition, could you try to reverse the partiaioning condition?<br>
That is, even number characters are on node #1, and odd number characters are on<br>
node #0.<br>
<br>
<br>
<br>
<br>
On Tue, 15 Oct 2013 14:56:50 +0800<br>
<div><div>Fantix King &lt;<a href="mailto:fantix.king@gmail.com" target="_blank">fantix.king@gmail.com</a>&gt; wrote:<br>
<br>
&gt; Oh sure, thank you very much for helping here!<br>
&gt;<br>
&gt; Table definition:<br>
&gt;<br>
&gt; CREATE TABLE my_table (<br>
&gt;     id BIGINT NOT NULL,<br>
&gt;     character_id BIGINT NOT NULL,<br>
&gt;     my_col_one BOOLEAN NOT NULL,<br>
&gt;     my_col_two INTEGER NOT NULL,<br>
&gt;     quality INTEGER NOT NULL,<br>
&gt;     properties BYTEA,<br>
&gt;     PRIMARY KEY (id)<br>
&gt; );<br>
&gt;<br>
&gt; dist_def for this table:<br>
&gt;<br>
&gt; INSERT INTO pgpool_catalog.dist_def VALUES (<br>
&gt;     &#39;my_db&#39;,<br>
&gt;     &#39;public&#39;,<br>
&gt;     &#39;my_table&#39;,<br>
&gt;     &#39;character_id&#39;,<br>
&gt;     ARRAY[&#39;id&#39;, &#39;character_id&#39;, &#39;my_col_one&#39;, &#39;my_col_two&#39;, &#39;quality&#39;,<br>
&gt; &#39;properties&#39;],<br>
&gt;     ARRAY[&#39;bigint&#39;, &#39;bigint&#39;, &#39;boolean&#39;, &#39;integer&#39;, &#39;integer&#39;, &#39;bytea&#39;],<br>
&gt;     &#39;pgpool_catalog.dist_def_demo&#39;<br>
&gt; );<br>
&gt; CREATE OR REPLACE FUNCTION pgpool_catalog.dist_def_demo(anyelement)<br>
&gt; RETURNS integer AS $$<br>
&gt;     SELECT CASE WHEN $1 % 2 = 0 THEN 0<br>
&gt;         ELSE 1<br>
&gt;     END;<br>
&gt; $$ LANGUAGE sql;<br>
&gt;<br>
&gt; There&#39;re also some other irrelevant definitions in dist_def and<br>
&gt; replicate_def, but they have nothing to do with this table at all (no<br>
&gt; foreign key, no constraints, etc.). Please let me know if you need the full<br>
&gt; file. :)<br>
&gt;<br>
&gt;<br>
&gt; BR,<br>
&gt; Fantix<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Oct 15, 2013 at 1:33 PM, Yugo Nagata &lt;<a href="mailto:nagata@sraoss.co.jp" target="_blank">nagata@sraoss.co.jp</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; Thanks for your reporting and analyzing. I&#39;ll handle the problem. However,<br>
&gt; &gt; it may<br>
&gt; &gt; take some time for me to resoleve sinse I have other issues now.<br>
&gt; &gt;<br>
&gt; &gt; For analysis, could you please tell me the definition of table &quot;my_table&quot;,<br>
&gt; &gt; and contents of dist_def, replicate_def ?<br>
&gt; &gt;<br>
&gt; &gt; On Mon, 14 Oct 2013 20:08:07 +0800<br>
&gt; &gt; Fantix King &lt;<a href="mailto:fantix.king@gmail.com" target="_blank">fantix.king@gmail.com</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I met a pretty weird issue in our production use of pgpool-II 3.3.1.<br>
&gt; &gt; &gt; Executing SELECT through pgpool on some certain rows of a dist_def-ed<br>
&gt; &gt; table<br>
&gt; &gt; &gt; always hang - you have to kill the &quot;psql&quot;.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; It keeps reproducing in our production system while I cannot find a<br>
&gt; &gt; similar<br>
&gt; &gt; &gt; report anywhere else. I&#39;m still trying to reproduce this issue<br>
&gt; &gt; individually.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; My setup is like this:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;  * 1 pgpool in parallel mode<br>
&gt; &gt; &gt;  * 2 PostgreSQL 9.1.9 backends<br>
&gt; &gt; &gt;  * 1 PostgreSQL 9.1.9 system db<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; The table &quot;my_table&quot; is partitioned with &quot;character_id&quot; key column, where<br>
&gt; &gt; &gt; even number characters are on node #0, and odd number characters are on<br>
&gt; &gt; &gt; node #1. This query hangs:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; statement: SELECT <a href="http://my_table.id" target="_blank">my_table.id</a>, my_table.character_id,<br>
&gt; &gt; my_table.my_col_one,<br>
&gt; &gt; &gt; my_table.my_col_two, my_table.quality, my_table.properties FROM my_table<br>
&gt; &gt; &gt; WHERE  my_table.character_id = 100;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I found that:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;  * All other hanging queries (the same table) are on node #0 - even<br>
&gt; &gt; numbers<br>
&gt; &gt; &gt;  * If I reduce any column from the SELECT list, the query works<br>
&gt; &gt; &gt;  * Not all of the queries are hanging, e.g. character_id = 102 works fine<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Then I diff-ed the pgpool log querying row 100(-) and 102(+):<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;   1  : ProcessFrontendResponse: kind from frontend Q(51)<br>
&gt; &gt; &gt;   2  : pool_unset_doing_extended_query_message: done<br>
&gt; &gt; &gt;   3 -: statement: SELECT <a href="http://my_table.id" target="_blank">my_table.id</a>, my_table.character_id,<br>
&gt; &gt; &gt; my_table.my_col_one, my_table.my_col_two, my_table.quality,<br>
&gt; &gt; &gt; my_table.properties FROM my_table WHERE  my_table.character_id = 100;<br>
&gt; &gt; &gt;   4  : pool_set_query_in_progress: done<br>
&gt; &gt; &gt;   5  : initSelectStmt: ANALYZE now(0)<br>
&gt; &gt; &gt;   6  : inside build_range_info num= 1 current_select=0<br>
&gt; &gt; &gt;   7  : inside build_range_info dist 0<br>
&gt; &gt; &gt;   8  : inside build_virtual_info dist state=P  my_table<br>
&gt; &gt; &gt;   9  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=0,col=id,type=bigint,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt;  10  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=1,col=character_id,type=bigint,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt;  11  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=2,col=my_col_one,type=boolean,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt;  12  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=3,col=my_col_two,type=integer,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt;  13  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=4,col=quality,type=integer,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt;  14  : append_virtual_table select=0,<br>
&gt; &gt; &gt; no=5,col=properties,type=bytea,table=my_table,state=P,valid=-1<br>
&gt; &gt; &gt; ...<br>
&gt; &gt; &gt;  17  : pool_parallel_query:  0 th FD_SET: 19<br>
&gt; &gt; &gt;  18  : pool_parallel_query:  1 th FD_SET: 21<br>
&gt; &gt; &gt;  19  : pool_parallel_query: num_fds: 22<br>
&gt; &gt; &gt;  20  : read_kind_from_one_backend: read kind from 0 th backend T<br>
&gt; &gt; &gt;  21  : pool_parallel_exec: kind from backend: T<br>
&gt; &gt; &gt;  22  : pool_parallel_exec: dummy from backend: C<br>
&gt; &gt; &gt;  23 +: pool_parallel_query:  1 th FD_SET: 21<br>
&gt; &gt; &gt;  24 +: pool_parallel_query: num_fds: 22<br>
&gt; &gt; &gt;  25  : read_kind_from_one_backend: read kind from 1 th backend T<br>
&gt; &gt; &gt;  26  : pool_parallel_exec: dummy kind from backend: T<br>
&gt; &gt; &gt;  27 -: pool_parallel_exec: kind from backend: D 3<br>
&gt; &gt; &gt;  28 +: pool_parallel_exec: kind from backend: D 4<br>
&gt; &gt; &gt;  29  : pool_parallel_exec: kind from backend: C<br>
&gt; &gt; &gt;  30  : pool_unset_query_in_progress: done<br>
&gt; &gt; &gt;  31  : pool_unset_query_in_progress: done<br>
&gt; &gt; &gt; * 32 -: pool_process_query: discard Z packet from backend 1*<br>
&gt; &gt; &gt;  33 -: detect_error: kind: Z<br>
&gt; &gt; &gt;  34 -: detect_error: kind: Z<br>
&gt; &gt; &gt;  35 -: detect_error: kind: Z<br>
&gt; &gt; &gt;  36  : read_kind_from_backend: kind: Z from 0 th backend<br>
&gt; &gt; &gt;  37  : read_kind_from_backend: read kind from 0 th backend Z<br>
&gt; &gt; NUM_BACKENDS: 2<br>
&gt; &gt; &gt;  38 +: read_kind_from_backend: kind: Z from 1 th backend<br>
&gt; &gt; &gt;  39 +: read_kind_from_backend: read kind from 1 th backend Z<br>
&gt; &gt; NUM_BACKENDS: 2<br>
&gt; &gt; &gt;  40 +: ProcessBackendResponse: kind from backend: Z<br>
&gt; &gt; &gt;  41 +: pool_read_message_length: slot: 0 length: 5<br>
&gt; &gt; &gt;  42 +: pool_read_message_length: slot: 1 length: 5<br>
&gt; &gt; &gt;  43 +: ReadyForQuery: transaction state:I<br>
&gt; &gt; &gt;  44 +: ReadyForQuery: transaction state:I<br>
&gt; &gt; &gt;  45 +: ProcessBackendResponse: Ready For Query<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; FYI some of the pgpool.conf:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; backend_weight0 = 1<br>
&gt; &gt; &gt; backend_weight1 = 1<br>
&gt; &gt; &gt; load_balance_mode = on<br>
&gt; &gt; &gt; replication_mode = on<br>
&gt; &gt; &gt; parallel_mode = on<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Please advice or let me know if I&#39;m missing any info, thank you!<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; BR,<br>
&gt; &gt; &gt; Fantix<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Yugo Nagata &lt;<a href="mailto:nagata@sraoss.co.jp" target="_blank">nagata@sraoss.co.jp</a>&gt;<br>
&gt; &gt;<br>
<br>
<br>
</div></div><span><font color="#888888">--<br>
Yugo Nagata &lt;<a href="mailto:nagata@sraoss.co.jp" target="_blank">nagata@sraoss.co.jp</a>&gt;<br>
</font></span></blockquote></div><br></div></div>