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

From: Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
To: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>
Cc: psycopg(at)postgresql(dot)org
Subject: Re: psycopg2 conn.poll() hangs when used with sshtunnel
Date: 2018-10-30 13:54:51
Message-ID: CANxoLDfDw=9oAePwZk0Su9PLB3ni_NQdJ5Lj1k21GzYe07sY8Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: psycopg

Hi

On Tue, 30 Oct 2018, 19:17 Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com
wrote:

> 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 :(
>

What changes should I made to fix this? Or it should be fixed in
psycopg2 itself.

>
> -- 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 Daniele Varrazzo 2018-10-30 14:26:38 Re: psycopg2 conn.poll() hangs when used with sshtunnel
Previous Message Daniele Varrazzo 2018-10-30 13:47:40 Re: psycopg2 conn.poll() hangs when used with sshtunnel