Re: Transactions not idle but "idle in transaction" since - Mailing list pgsql-jdbc

From Oliver Jowett
Subject Re: Transactions not idle but "idle in transaction" since
Date
Msg-id 40C11571.6000908@opencloud.com
Whole thread Raw
In response to Transactions not idle but "idle in transaction" since 7.4 and JDBC 7.4.213  (Christian van der Leeden <lists@logicunited.com>)
List pgsql-jdbc
Christian van der Leeden wrote:

> Hi,
>
>     I've upgraded the postgres system to 7.4.2 recently and switched
> the JDBC driver to 7.4.213. Now all my transactions are always
> "idle in transaction" instead of "idle" (when doing ps -U postgres).
> I'm using WebObjects, which will set setAutocommit(true) while doing
> selects and just setAutocommit(false) when doing insert/updates.
>
> Is the autocommit feature now implemented in the JDBC adaptor (and not
> on the server side)? I couldn't find the logic of doing rollback/commits
> on the client side after each expression in AbstractJdbc1Connection.java
> (which comes with 7.4.2 distribution).

7.3 added a way to disable server-side autocommit; 7.4 removed it again.
The default server behaviour is autocommit ON, so the JDBC driver does
extra work to implement autocommit=off (it inserts BEGIN/COMMIT/ROLLBACK
as needed).

> I'm guessing that transactions being idle in transaction could be the cause
> of my problem, that postgres is eating away virtual memory (on OSX10.3),
> and I'd like to try to get all selects commited or rolled back...

It's probably harmless; the driver does a "COMMIT;BEGIN" or
"ROLLBACK;BEGIN" when committing or rolling back, so there always
appears to be a transaction open. Of course it's also possible your app
really IS leaving the transaction open -- that'd be an application bug.

If you upgrade to the latest CVS driver this behaviour should go away
(the BEGIN is delayed until the first query is run).

-O


pgsql-jdbc by date:

Previous
From: Oliver Jowett
Date:
Subject: Re: bug report
Next
From: edwin karundeng
Date:
Subject: unsubscribe..