Re: psycopg2 conn.poll() hangs when used with sshtunnel

From: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>
To: Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
Cc: psycopg(at)postgresql(dot)org
Subject: Re: psycopg2 conn.poll() hangs when used with sshtunnel
Date: 2018-10-30 13:47:40
Message-ID: CA+mi_8boc=n4jZnX+20-UYwZYd4wse+wrnZWf6zG-1nMhDLmnA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: psycopg

It seems to me that the problem is in pqpath.c pq_get_last_result()
function. The loop assumes PQgetResult won't block, which seems always the
case with the direct connection, but PQisBusy() actually returns 1
connecting through the tunnel.

So at a first read, the simplification given by pq_get_last_result() is
broken: the results should be returned one by one in the normal loop going
through PQisBusy(), PQconsumeInput(), and the polling machinery. It seems a
chunky refactoring but as it is now I don't like pq_get_last_result()
anymore :(

-- Daniele

On Tue, Oct 30, 2018 at 12:52 PM Daniele Varrazzo <
daniele(dot)varrazzo(at)gmail(dot)com> wrote:

> Taking a look. Thank you for the test.
>
> On Tue, Oct 30, 2018 at 12:36 PM Akshay Joshi <
> akshay(dot)joshi(at)enterprisedb(dot)com> wrote:
>
>> Hi Team
>>
>> I have created one sample application to replicate the issue. Attached is
>> the sample application, please read "README.txt" file to proceed further.
>> Can someone please suggest why poll() function hangs when run wrong query
>> with sshtunnel v0.1.4.
>>
>> On Mon, Oct 8, 2018 at 12:19 PM Akshay Joshi <
>> akshay(dot)joshi(at)enterprisedb(dot)com> wrote:
>>
>>> Hi Team
>>>
>>> As one issue(*https://github.com/psycopg/psycopg2/issues/781
>>> <https://github.com/psycopg/psycopg2/issues/781>*) has already been
>>> created for conn.poll() function hangs when executes COPY command in async
>>> mode. Similarly conn.poll() functions hangs when we run wrong query in
>>> async mode using sshtunnel <https://pypi.org/project/sshtunnel/> v0.1.3.
>>>
>>> Can someone please suggest what went wrong when used sshtunnel, or the
>>> pointers/reason where poll() method hangs.
>>>
>>> On Fri, Sep 28, 2018 at 5:43 PM Akshay Joshi <
>>> akshay(dot)joshi(at)enterprisedb(dot)com> wrote:
>>>
>>>> Hello
>>>>
>>>> I am using psycopg2 2.7.4 to connect to the PostgreSQL database server
>>>> using asynchronoussupport. It is working absolutely fine. I have used
>>>> sshtunnel <https://pypi.org/project/sshtunnel/> v0.1.3 in pgAdmin4.
>>>> When I connect the PostgreSQL database server using ssh tunnel and run the
>>>> valid/correct query it works fine, but when I run any wrong query(invalid
>>>> column of table) my application gets hang on conn.poll() function.
>>>>
>>>> Please refer the code how we use conn.poll() with timeouts
>>>> https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob;f=web/pgadmin/utils/driver/psycopg2/connection.py;h=4f11c12b30882209c308cb3558e67189c97ea31e;hb=15fe26a7106610b710f3de5b604cd038302c926a#l1363
>>>>
>>>> Can anyone please provide some pointers, suggestions?
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>

In response to

Responses

Browse psycopg by date

  From Date Subject
Next Message Akshay Joshi 2018-10-30 13:54:51 Re: psycopg2 conn.poll() hangs when used with sshtunnel
Previous Message Daniele Varrazzo 2018-10-30 12:52:08 Re: psycopg2 conn.poll() hangs when used with sshtunnel