<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>>>> c = postgresql.open('pq://postgres:***@dev01:5434/hr')</div><div>Traceback (most recent call last):</div><div> File "<stdin>", line 1, in <module></div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/__init__.py", line 94, in open</div>
<div> c.connect()</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 2438, in connect</div><div> self._establish()</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 2578, in _establish</div>
<div> sd = self.sys.startup_data()</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/lib/__init__.py", line 398, in __getattr__</div><div> bs = BoundSymbol(sym, db)</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/lib/__init__.py", line 288, in __init__</div>
<div> ps = database.prepare(symbol)</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 2346, in prepare</div><div> ps._fini()</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 1454, in _fini</div>
<div> self.database._pq_complete()</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 2618, in _pq_complete</div><div> self.typio.raise_error(x.error_message, cause = getattr(x, 'exception', None))</div>
<div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", line 509, in raise_error</div><div> self.raise_client_error(error_message, **kw)</div><div> File "/home/kb_iface/env/lib/python3.2/site-packages/postgresql/driver/pq3.py", 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'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 "Close: cannot get parse message", 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->info[i]:0x7f47c3e4f000 pid:21018</div>
<div>Apr 24 04:36:34 dev01 pgpool[14047]: pool_do_auth: cp->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('pq://postgres:***@localhost:5432/hr')</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>