Re: XA support - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: XA support
Date
Msg-id D90E9D45-AA91-4145-8E35-5D8A9010B3BD@fastcrypt.com
Whole thread Raw
In response to Re: XA support  (Heikki Linnakangas <hlinnaka@iki.fi>)
List pgsql-jdbc
Heikki,

The folks at JONAS want to test the driver so I'd think they would
work with you on this.
Post this on the pgj2ee list.

Dave
On 30-Jun-05, at 2:37 PM, Heikki Linnakangas wrote:

> On Thu, 30 Jun 2005, Oliver Jowett wrote:
>
>
>> Heikki Linnakangas wrote:
>>
>>
>>> B. When the second transaction starts, the first transaction is
>>> prepared
>>> behind the scenes, freeing the connection for the new transaction.
>>>
>>
>> This is probably the way to go initially, since it's much simpler. It
>> should also deal with the more common uses of XA where you're just
>> coordinating 2 or more resources in an otherwise straightforward
>> begin-do stuff-commit sequence. We can get clever later :)
>>
>> Related issues: supporting this case:
>>
>>  xaRes.start(xid1, XAResource.TMNOFLAGS);
>>  stmt.executeUpdate("...");
>>  xaRes.end(xid1, XAResource.TMSUSPEND);
>>  // ...
>>  xaRes.start(xid1, XAResource.TMRESUME);
>>  stmt.executeUpdate("...");
>>  xaRes.end(xid1, XAResource.TMSUCCESS);
>>
>
> This is essentially impossible with approach B, if the ... part
> uses the connection for some other xid. Otherwise, should work.
>
>
>> and this one:
>>
>>  xaRes.start(xid1, XAResource.TMNOFLAGS);
>>  stmt.executeUpdate("...");
>>  xaRes.end(xid1, XAResource.TMSUCCESS);
>>  // ...
>>  xaRes.start(xid1, XAResource.TMJOIN);
>>  stmt.executeUpdate("...");
>>  xaRes.end(xid1, XAResource.TMSUCCESS);
>>
>
> Practically the same as above, really.
>
>
>> and this one (yow!):
>>
>> (thread 1):
>>  xaRes.start(xid1, XAResource.TMNOFLAGS);
>>  stmt.executeUpdate("...");
>>
>> (thread 2):
>>  xaRes.start(xid1, XAResource.TMJOIN);
>>  stmt.executeUpdate("...");
>>
>
> Note that the XA term "thread of control" actually means a
> connection in JTA terms. It doesn't make any difference which java
> thread does work. See JTA spec, section 3.4.3.
>
> I'm leaning towards approach C myself, since it's the simplest to
> implement and doesn't cause any unexpected prepares. Or possibly
> even violating the spec and not allowing to start another
> transaction before the previous one has been prepared. It depends
> on how the popular application servers behave in real life.
>
> - Heikki
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
>
>


pgsql-jdbc by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: XA support
Next
From: "Alberto Molteni"
Date:
Subject: Problem with datestyle and driver jdbc