Re: psycopg2 conn.poll() hangs when used with sshtunnel
От | Daniele Varrazzo |
---|---|
Тема | Re: psycopg2 conn.poll() hangs when used with sshtunnel |
Дата | |
Msg-id | CA+mi_8Yy5OswpaBH_PTegjs5WS_=nr4VJNGenk7tBJW+wA_Qxg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: psycopg2 conn.poll() hangs when used with sshtunnel (Akshay Joshi <akshay.joshi@enterprisedb.com>) |
Ответы |
Re: psycopg2 conn.poll() hangs when used with sshtunnel
|
Список | psycopg |
On Tue, Oct 30, 2018 at 1:55 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
HiOn Tue, 30 Oct 2018, 19:17 Daniele Varrazzo <daniele.varrazzo@gmail.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.
It is a problem in psycopg. I have a quick fix I can release with the next bugfix if it shows no regression (https://github.com/psycopg/psycopg2/issues/801). A better fix requires a non trivial rewrite of the async and green paths (https://github.com/psycopg/psycopg2/issues/802): I'd like to do it but it may happen later if the band aid holds.
I was just about to prepare the 2.7.6 release, so if the quick fix is easy and doesn't cause regressions it will be released soon.
-- Daniele
В списке psycopg по дате отправления: