Re: XA support
От | Dave Cramer |
---|---|
Тема | Re: XA support |
Дата | |
Msg-id | D90E9D45-AA91-4145-8E35-5D8A9010B3BD@fastcrypt.com обсуждение исходный текст |
Ответ на | Re: XA support (Heikki Linnakangas <hlinnaka@iki.fi>) |
Список | 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 по дате отправления: