Re: connection already closed error

Поиск
Список
Период
Сортировка
От Daniele Varrazzo
Тема Re: connection already closed error
Дата
Msg-id CA+mi_8a3QoF5rLL0QFV2foU=KO+Cc4-jx3L=cZwS8kmUp+OhEw@mail.gmail.com
обсуждение исходный текст
Ответ на connection already closed error  (Mark Theisen <mark.theisen@digitecinc.com>)
Ответы Re: connection already closed error  (Mark Theisen <mark.theisen@digitecinc.com>)
Re: connection already closed error  (AM <agentm@themactionfaction.com>)
Re: connection already closed error  (Federico Di Gregorio <fog@dndg.it>)
Список psycopg
On Tue, Oct 18, 2011 at 3:32 PM, Mark Theisen
<mark.theisen@digitecinc.com> wrote:

Hi Mark,

> I am using python2.6 with twisted 10.1.0 and psycopg2 2.2.1. We are also using pgpooler with transaction pool mode
set.I am using the twisted ConnectionPool and twistedpg.py, which is: 

I'm afraid we don't maintain Twisted ConnectionPool. Also, are you are
using a pooling middleware (pgpool) with a python pool (Twisted's)?
This is at best redundant, at worse undefined.

Am I understanding right that "twistedpg" is some module of yours?
Googling for it, it suggest me that I wanted to look for "twisted
pig", which I would prefer to avoid.


> I am getting this error when we restart pgpool:
> [...]
>    conn.close()
> psycopg2.InterfaceError: connection already closed

It doesn't surprise me so much.


> Would a possible solution be to change twistedpg.py to:

>    def close(self):
>        try:
>            _2connection.close(self)
>        except psycopg2.InterfaceError:
>            pass

It seems so. You could also use "if not self.closed:
_2connection.close(self)" (if you have this attribute exposed... why
not just self.close()?). However, I think there is not really a reason
for which conn.close() should raise an error on a closed connection:
it is an idempotent method.

/me looks at the dbapi...

uhm, it doesn't explicitly require that. I think a more robust close()
should just return if the connection is closed. It shouldn't raise
exceptions, as in turn PQfinish doesn't. Oh yes, I see: we used to
execute a ROLLBACK on close() so we needed the connection to be open
to be properly closed... but we don't do this anymore. Currently we do
little more than calling PQfinish, which never fails (well, not
politely at least).

Fog, whaddyathink: "conn.close(); conn.close()" should raise an
exception or should just return?

-- Daniele

В списке psycopg по дате отправления:

Предыдущее
От: Mark Theisen
Дата:
Сообщение: connection already closed error
Следующее
От: Mark Theisen
Дата:
Сообщение: Re: connection already closed error