[Psycopg] EOF error
James Henstridge
james at jamesh.id.au
Thu Feb 28 12:28:19 CET 2008
On 28/02/2008, johnf <jfabiani at yolo.com> wrote:
> On Wednesday 27 February 2008 06:09:31 pm Chris Cogdon wrote:
> > On Feb 27, 2008, at 17:47 , johnf wrote:
>
> > > On Wednesday 27 February 2008 05:23:59 pm you wrote:
> > >> On Feb 27, 2008, at 15:37 , johnf wrote:
> > >>> I got similar results. I also get an entry into the log
> > >>> "Abort" when I use connection.close(). But I don't get anything
> > >>> when I use
> > >>> del connection.
> > >>
> > >> You have a transaction in progress at the time ? Ie, perhaps you did
> > >> some select statements inside read_serializable mode ?
> > >
>
> > > I doubt that. I just open the connection and then make a select
> > > and close.
> >
> > That would be a transaction ;) It happens under the hood in most
> > (all?) python-postgresql connectors. Upon the first statement
> > executed, the connector will open up a transaction, even if it's a
> > simple select statement.
> >
> > So, I just repeated your experiment, with FULL debugging on, and I
> > get this:
> >
> > 2008-02-27 18:10:46 PST (25214)> LOG: statement: ABORT
> >
> > and if I do a "rollback" or a "commit" before I try and close, then I
> > DONT get the ABORT.
> >
> > So, yeah, you're inside a transaction,even after a simple select.
>
> OK so what is a guy suppose to do? It seems like a no win situation.
If you can produce a minimal test case, please file a bug report at
http://www.initd.org/tracker/psycopg/ and attach it there.
This sounds a lot like a reference loop, so having a minimal example
would be helpful in debugging it.
The fix will most likely involve adding tp_traverse() methods to some
of the types in psycopg (which will allow the cycle GC to find the
loops).
It might also be necessary to add tp_clear() methods to some (to let
the GC break the loops).
James.
More information about the Psycopg
mailing list