cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tore Halset <>
Subject Re: postgres, idle in transaction
Date Fri, 27 Apr 2007 06:51:53 GMT

Creating your own DataSource (wrapper) as suggested by Andrus should  
give you good control over things that are happening and perhaps what  
to do/fix.

I had a problem in some non-cayenne based code that did not close the  
jdbc Connection and it was hard to know where the problem was until I  
started store a "new Exception()" and a timestamp every time I  
created a new Connection. I then had the possibility to log  
stacktraces to places where the code created Connections that was not  
closed. Perhaps you could do something like that to track things in  
your DataSource wrapper?

  - Tore.

On Apr 27, 2007, at 8:31 , Peter Schröder wrote:

> hi andrus,
> i know that this issue sucks, but we are forced to solve it.
> we did some further investigation of our live-environment and  
> noticed that these idle connections appear only while our  
> application is plugged into our loadbalancer. first we thought that  
> this could be an concurrency or load issue, but regarding our logs,  
> the load is close to zero...
> i wondered if there is a way to get the current postgres-connection  
> from cayenne. i dont know how jdbc-connections are wrapped bye  
> cayenne and i dont want to search through the code, even though i  
> might learn something ;-)
> currently i am wondering about why the transaction is not properly  
> closed and i think that the postgres people said, that this issue  
> had been fixed decades ago, so i guess thats right. is there a way  
> that the connection is not properly returned to the connection-pool  
> after a request and because of that the transaction will not put to  
> commit?
> kind regards
> peter
> -----Urspr√ľngliche Nachricht-----
> Von: Andrus Adamchik []
> Gesendet: Donnerstag, 26. April 2007 13:47
> An:
> Betreff: Re: AW: AW: postgres, idle in transaction
> On Apr 26, 2007, at 1:14 PM, Oilid Adsi wrote:
>> Or maybe by adding an explicit "COMMIT" after every SELECT-
>> Statement when the connection will be returned to the pool? Can
>> this implemented as an optional function to the Cayenne framework?
> Per your comment the patch doing "rollback" didn't help, why do you
> think "commit" should help? Commit and rollback both terminate a
> transaction.
> But if you want to explore various scenarios, Cayenne allows you to
> plug a custom implementation of DataSource via the DataSourceFactory
> mechanism. So you don't need to patch Cayenne, but instead you can
> write a custom DataSource (based on Cayenne or DBCP library, or do it
> from scratch) to do any pre- or post- processing of connections
> checked in or out of the pool.
> If you get to the cause of it, please share. Unfortunately I am out
> of ideas regarding this issue.
> Andrus

View raw message