Re: Problem with JTA/JTS - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: Problem with JTA/JTS
Date
Msg-id 1024051742.1538.247.camel@inspiron.cramers
Whole thread Raw
In response to Re: Problem with JTA/JTS  (Johan Svensson <johan.svensson@windh.net>)
Responses Re: Problem with JTA/JTS
List pgsql-jdbc
Johan,

Can you send me your test code. I think there are some issues with the
XAConnection, I think it's time to fix them

Dave

On Fri, 2002-06-14 at 06:14, Johan Svensson wrote:
> On Thu, 2002-06-13 at 22:32, Tom Lane wrote:
> >
> > It does take a finite (and not small) amount of time for a backend to
> > clean up and exit after it detects client closure of the connection.
> >
> > It looks like you're managing to spawn connections fast enough that
> > the not-yet-exited backends are filling all your available backend
> > slots.
> >
> >
> > If you are concerned about performance, why in the world are you
> > starting a new connection for every transaction anyway?  Talk about
> > self-inflicted damage ... set up a connection pool, man.
> >
>
> Seems like I made a mistake in the dummy code simulating the behavior.
> As you said it looks like new connections are spawned faster than the
> "not-yet-exited backends are filling in the available slots". However, I
> couldn't understand why a new connection was created since I thought I
> had pooling. Now I see something that may cause this behavior. The line:
>
>    Connection conn = xaDs.getXAConnection().getConnection();
>
> should be replaced with:
>
>    Connection conn = xaCon.getConnection();
>
> where xaCon is the "pooled connection". Doing that I still get error if
> I don't have the sleep() call between transactions. The PostgreSQL
> console still prints a lot of "DEBUG:  pq_recvbuf: unexpected EOF on
> client connection" and one "FATAL 1:  Sorry, too many clients already".
> The exception I get now looks like this:
>
> javax.transaction.xa.XAException
>  at org.postgresql.xa.XAConnectionImpl.start(XAConnectionImpl.java:476)
>  at Test.main(Test.java:144)
>
> To me the following code snippet is the same as the previous one minus
> J2EE stuff.
>
> --- begin code snippet ---
>
>    // this is the pooled connection
>    Connection conn = DriverManager.getConnection(
>       "jdbc:postgresql:<db>", "<user>", "<pwd>" );
>    for ( int i = 0; i < 999; i++ )
>    {
>       // begin transaction
>       conn.setAutoCommit( false );
>
>       Statement stmnt = conn.createStatement();
>       stmnt.executeUpdate( "INSERT INTO some_table (some_value) " +
>          "VALUES (" + i + ");" );
>
>       conn.commit();
>       // end transaction
>    }
>
> --- end code snippet ---
>
> That code works fine but using XAConnection won't work, why?
> XAConnection is the only thing I can pool, there is no way for me to
> manage the underlying java.sql.Connection when using/implementing JTA.
> It is up to the XAConnection implementation to manage the real
> connection(s) and I may or may not benefit from pooling the XAConnection
> depending on the implementation. An enlisted resource should be able to
> reuse the connections that participated in the transaction from the
> moment the transaction is completed, or?
>
> Basically this comes down to three questions:
>
>  1. Is the org.postgresql.xa.XAConnectionImpl pooling "real"
>     connections?
>  2. Will I benefit from pooling XAConnections?
>  3. May the underlying connection be reused as soon as it is free?
>
> Another thing that crossed my mind is the message "DEBUG:  pq_recvbuf:
> unexpected EOF on client connection" that is printed some time after the
> connection is closed. Couldn't that indicate that the connection isn't
> closed properly forcing us to create a new connection instead of reusing
> the existing one? Hope this clarified my problem some.
>
> regards,
>
> Johan Svensson [johan.svensson@windh.net]
> Kernel Developer, .windh AB
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
>




pgsql-jdbc by date:

Previous
From: Johan Svensson
Date:
Subject: Re: Problem with JTA/JTS
Next
From: Johan Svensson
Date:
Subject: Re: Problem with JTA/JTS