AW: postgres, idle in transaction

From: Peter Schröder (Peter.Schroede..reenet-ag.de)
Date: Fri Apr 27 2007 - 03:33:54 EDT

  • Next message: Peter Schröder: "Jgroups config file"

    hi tore,

    thank you for the hint, we are thankfull for all the help.

    kind regards
    peter

    -----Ursprüngliche Nachricht-----
    Von: Tore Halset [mailto:halse..vv.ntnu.no]
    Gesendet: Freitag, 27. April 2007 08:52
    An: use..ayenne.apache.org
    Betreff: Re: postgres, idle in transaction

    Hello.

    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 [mailto:andru..bjectstyle.org]
    > Gesendet: Donnerstag, 26. April 2007 13:47
    > An: use..ayenne.apache.org
    > 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.
    >
    > http://objectstyle.org/cayenne/lists/cayenne-user/2007/04/0159.html
    >
    > 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
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Apr 27 2007 - 03:35:11 EDT