<div dir="ltr"><div style>Hello!</div><div style>I tried to connect to my pgpool-II 3.2.3 instance using py-postgresql library (it uses extended protocol) and failed with the following error:</div><div style><br></div>---------------------------------------------------<div>

<div>&gt;&gt;&gt; c = postgresql.open(&#39;pq://postgres:***@dev01:5434/hr&#39;)</div><div>Traceback (most recent call last):</div><div>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/__init__.py&quot;, line 94, in open</div>

<div>    c.connect()</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 2438, in connect</div><div>    self._establish()</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 2578, in _establish</div>

<div>    sd = self.sys.startup_data()</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/lib/__init__.py&quot;, line 398, in __getattr__</div><div>    bs = BoundSymbol(sym, db)</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/lib/__init__.py&quot;, line 288, in __init__</div>

<div>    ps = database.prepare(symbol)</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 2346, in prepare</div><div>    ps._fini()</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 1454, in _fini</div>

<div>    self.database._pq_complete()</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 2618, in _pq_complete</div><div>    self.typio.raise_error(x.error_message, cause = getattr(x, &#39;exception&#39;, None))</div>

<div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 509, in raise_error</div><div>    self.raise_client_error(error_message, **kw)</div><div>  File &quot;/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py&quot;, line 484, in raise_client_error</div>

<div>    raise client_error</div><div>postgresql.exceptions.ConnectionFailureError: unexpected EOF from server</div><div>  CODE: 08006</div><div>  LOCATION: CLIENT</div><div>  DETAIL: Zero-length read from the connection&#39;s socket.</div>

<div>STATEMENT: [parsing]</div><div>  statement_id: py:0xcffa90</div><div>  string:</div><div>    SYMBOL: startup_data</div><div>      source:</div><div>        SELECT</div><div>         pg_catalog.version()::text AS version,</div>

<div>         backend_start::text,</div><div>         client_addr::text,</div><div>         client_port::int</div><div>        FROM pg_catalog.pg_stat_activity WHERE pid = pg_catalog.pg_backend_pid()</div><div>        UNION ALL SELECT</div>

<div>         pg_catalog.version()::text AS version,</div><div>         NULL::text AS backend_start,</div><div>         NULL::text AS client_addr,</div><div>         NULL::int AS client_port</div><div>        LIMIT 1;</div>

<div>    LIBRARY: /home/kb_iface/env/lib/python3.2/site-packages/postgresql/lib/libsys.sql</div><div>CONNECTION: [closed]</div><div>CONNECTOR: [Host] pq://postgres:***@dev01:5434/hr</div><div>  category: None</div><div>DRIVER: postgresql.driver.pq3.Driver</div>

</div><div>-----------------------------------------------------------------------------------</div><div><br></div><div style>Corresponding log from pgpool contains &quot;Close: cannot get parse message&quot;, which lead me to this bugreport <a href="http://www.sraoss.jp/pipermail/pgpool-general/2012-August/000898.html">http://www.sraoss.jp/pipermail/pgpool-general/2012-August/000898.html</a></div>

<div style>I looked through 3.2.3 code, and it seems that patch, that should have fixed this is there <a href="http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commitdiff;h=479e9d1416ff0294519e9155084bc1d60c75c850;hp=8af289e6d02ce29f0f5d0ca04dee6992a2cb258d">http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commitdiff;h=479e9d1416ff0294519e9155084bc1d60c75c850;hp=8af289e6d02ce29f0f5d0ca04dee6992a2cb258d</a></div>

<div style>But error stil reproduces.</div><div style><br></div><div style>Here is pgpool log with debugging enabled:</div><div style><br></div><div style>--------------------------------------</div><div style><div>Apr 24 04:36:34 dev01 pgpool[14047]: I am 14047 accept fd 8</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: connection received: host=dev01 port=50093</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: Protocol Major: 1234 Minor: 5679 database:  user: </div><div>Apr 24 04:36:34 dev01 pgpool[14047]: SSLRequest from client</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_ssl: SSL requested but SSL support is not available</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: Protocol Major: 3 Minor: 0 database: hr user: postgres</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: new_connection: connecting 0 backend</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: new_connection: connecting 1 backend</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_ssl: SSL requested but SSL support is not available</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_ssl: SSL requested but SSL support is not available</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 0 length: 12</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 1 length: 12</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_do_auth: auth kind:5</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: trying md5 authentication</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: DB node id: 0 salt: d61f8565</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: trying md5 authentication</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: DB node id: 1 salt: 68cc7e18</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 22</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 22</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: application_name value: </div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: application_name value: </div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 25</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 25</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: client_encoding value: UTF8</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: client_encoding value: UTF8</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 23</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 23</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: DateStyle value: ISO, MDY</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: DateStyle value: ISO, MDY</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 25</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 25</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: integer_datetimes value: on</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: integer_datetimes value: on</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 27</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 27</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: IntervalStyle value: postgres</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: IntervalStyle value: postgres</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 20</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 20</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: is_superuser value: on</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: is_superuser value: on</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 25</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 25</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: server_encoding value: UTF8</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: server_encoding value: UTF8</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 25</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 25</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: server_version value: 9.2.4</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: server_version value: 9.2.4</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 35</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 35</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: session_authorization value: postgres</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: session_authorization value: postgres</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 35</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 35</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: standard_conforming_strings value: on</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: standard_conforming_strings value: on</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 0 length: 17</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length2: master slot: 1 length: 17</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 0 th backend: name: TimeZone value: GMT</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: 1 th backend: name: TimeZone value: GMT</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 0 length: 12</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 1 length: 12</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_do_auth: cp-&gt;info[i]:0x7f47c3e4f000 pid:21018</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_do_auth: cp-&gt;info[i]:0x7f47c3e4f088 pid:19510</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_send_auth_ok: send pid 19510 to frontend</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: select_load_balancing_node: selected backend id is 0</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: selected load balancing node: 0</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_query_in_progress: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_command_success: done</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_writing_transaction: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_failed_transaction: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_transaction_isolation: done</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_skip_reading_from_backends: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_ignore_till_sync: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: read_kind_from_one_backend: read kind from 0 th backend Z</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: read_kind_from_backend: kind: Z from 0 th backend</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: read_kind_from_backend: read kind from 0 th backend Z NUM_BACKENDS: 2</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: read_kind_from_backend: kind: Z from 1 th backend</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: read_kind_from_backend: read kind from 1 th backend Z NUM_BACKENDS: 2</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: ProcessBackendResponse: kind from backend: Z</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 0 length: 5</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_read_message_length: slot: 1 length: 5</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: ReadyForQuery: transaction state:</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: ReadyForQuery: transaction state:I</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: ProcessBackendResponse: Ready For Query</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: ProcessFrontendResponse: kind from frontend C(43)</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_unset_doing_extended_query_message: done</div>

<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_set_query_in_progress: done</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: Close: cannot get parse message</div><div>Apr 24 04:36:34 dev01 pgpool[14047]: do_child: exits with status 1 due to error</div>

<div>Apr 24 04:36:34 dev01 pgpool[14014]: reap_handler called</div><div>Apr 24 04:36:34 dev01 pgpool[14014]: reap_handler: call wait3</div><div>Apr 24 04:36:34 dev01 pgpool[14014]: child 14047 exits with status 256</div>
<div>
Apr 24 04:36:34 dev01 pgpool[14014]: fork a new child pid 21019</div><div>Apr 24 04:36:34 dev01 pgpool[14014]: reap_handler: normally exited</div><div>----------------------------</div><div><br></div><div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px">

Meanwhile psycopg2 based python app connects and works successfuly, psql and other tools connect and work too.<br></div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px">If I change connection string to postgresql.open(&#39;pq://postgres:***@localhost:5432/hr&#39;)</div>

<div style="font-family:arial,sans-serif;font-size:12.727272033691406px">to connect to postgresql directly - all works perfectly.</div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px">

Please, help!</div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></div><div style="font-family:arial,sans-serif;font-size:12.727272033691406px">I use py-postgresql 1.1.0, python 3.2.3, pgpool 3.2.3, postgresql 9.2.4</div>

<div style="font-family:arial,sans-serif;font-size:12.727272033691406px">I have 2 postgres instances in streaming replication and pgpool2 configured for load balancing - it works ok if I try from psql or pgadmin.</div></div>

</div><div><br clear="all"><div>With best regards, Sergey Melekhin</div>
</div></div>