Hi Peter,
Thanks for reporting the details of the issue. I just ran a few
select queries in debugger to confirm that even select queries commit
the transaction before returning connection to the pool (they do).
So, just to doublecheck:
* Do you have other code outside Cayenne using the same connection pool?
* Are you using external transactions (i.e. is "Container Managed
Transactions" checkbox is checked)? (I don't think you've mentioned
this earlier in this thread?)
But anyways, I think regardless of whether Cayenne leaks (something I
still can't confirm) or not, I think we should log this as a bug in
Cayenne connection pool, and ensure that all connections returned to
the pool are rolled back by the PoolManager. Could you please log a
bug report in Jira [1].
Also could you possibly switch the DataSource to DBCP [2] and see if
that DBCP DataSource does the right thing? This may be an easier/
cleaner workaround than committing before queries.
[1]
https://issues.apache.org/cayenne/[2]
http://cayenne.apache.org/doc20/dbcpdatasourcefactory.htmlThanks
Andrus
On Apr 24, 2007, at 9:48 AM, Peter Schröder wrote:
hi,
we are still experiencing trouble with our postgres db and
connections hanging "idle in transaction".
we debugged the postgres driver and found out that he starts a
transaction on every select-query but does not close it.
cayenne does not seem to bother and re-uses these connections for
the next query, but other apps have trouble with the transactions,
cause they lock the used tables.
funny thing is that we cannot reproduce this failure with our test-
environment wich has the exact same setup as our live-servers...
currently we are doing a commitChanges() after every select-query
as a workaround. setting autoCommit to true would have the same
effect, but i dont like that idea...
kind regards,
peter