Re: BUG #6503: Idle in transaction while lazy loading in JSF render response

From: "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: <j(dot)vreven(at)aca-it(dot)be>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: BUG #6503: Idle in transaction while lazy loading in JSF render response
Date: 2012-03-02 20:51:51
Message-ID: 4F50DE870200002500045E5B@gw.wicourts.gov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-jdbc

<j(dot)vreven(at)aca-it(dot)be> wrote:

> This bug was not in jdbc4 driver: 8.4-701
> But is introduced in jdbc4 driver: 8.4-702
> It is still present in 9.1-901

You might get this in front of a more appropriate group of people if
you post to the pgsql-jdbc list. I'm moving discussion to that list.

> Context:
> * Tomcat 7
> * JPA2 Hibernate
> * Atomikos
> * Spring
> * JTA transaction manager (using org.postgresql.xa.PGXADataSource)
> ===
>
> If in the JSF lifecycle render-response an element is fetched by
> means of lazy loading (that was not fetched in invoke-application
> lifecycle) a transaction will be started but it remains idle in
> transaction for postgres.
>
> The JTA Transaction manager has no active transactions at that
> moment, so for JTA everything seems commit/rollback.
>
> The connection seems to be back in the connectionpool, since the
> transaction was used for only read operations no harm is done, and
> the connection becomes idle for postgres when the next thread
> invokes a commit on this connection.

Instead of assuming that someone can install a matching software
stack and replicate the problem, can you determine what methods are
invoked on which objects to manifest the problem, and create a
simple test case that can demonstrate the issue with just the test
case source code and a JDBC jar?

> Workaround 1: Use version 8.4-701 or lower

Are you able to try reverting portions of the difference between 701
and 702 to see which make a difference? If you ignore the
translation and test code, the changes weren't huge. It was
probably this commit:

https://github.com/pgjdbc/pgjdbc/commit/482c77d67efdcaf2b7db16c96bba20ea34bc294c

or maybe this one:

https://github.com/pgjdbc/pgjdbc/commit/cf625c7ba2647825b0e3995da3604785f14fa20e

Do you see anything wrong with either of those?

> Workaround 2: JSF phaselistener to begin and rollback transaction
> before and after render-response.

I have no idea what that means in terms of what statements are run,
or when.

-Kevin

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Claus Stadler 2012-03-03 00:58:44 Regression from 8.4 to 9.1.2/9.1.3: Optimizing filters on constants in unions
Previous Message Peter Eisentraut 2012-03-02 18:58:59 Re: BUG #6480: NLS text width problem

Browse pgsql-jdbc by date

  From Date Subject
Next Message Jo Vreven 2012-03-03 07:25:25 Re: BUG #6503: Idle in transaction while lazy loading in JSF render response
Previous Message j.vreven 2012-03-02 17:01:37 BUG #6503: Idle in transaction while lazy loading in JSF render response