Atomikos Forum |
Hi,
There is no equivalent to the setExclusiveConnectionMode method of the DataSourceBean in AtomikosDataSourceBean, this is because the connection pool behind AtomikosDataSourceBean never allows transactions to be interleaved. With a smart connection management (which the new pool does), interleaving does not bring any benefit so we decided to leave it completely out. The PostgreSQL driver should work out of the box. If not, please report this as it is a bug. Ludovic
Thanks Ludovic... this info is very helpful :)
When you say Postgresql driver should work out of the box, does that mean that the currently published known issues regarding Postgresql and XA do not apply when using the new AtomikosDataSourceBean? Or are there still outstanding issues with Postgresql's jdbc XA support and 2PC that transaction essentials cant/doesnt work around? I still have some cleanup and refactoring to do before I start submitting issues reports anywhere, but I plan to also test with Oracle to get another DB datapoint. Thanks again - Phillip
Hi,
The PostgreSQL team started working on XA support quite some time ago but only managed to make it usable in version 8.3 with driver version 8.3-603. Earlier versions of both the database and the driver had subtle bugs that prevented important features from working. The old DataSourceBean also does not work but the new AtomikosDataSourceBean should. The only problem left in the PostgreSQL implementation is the partial heuristics support but that does not prevent it to be usable. You'll 'just' have to be extra careful in case of a serious system crash that you have to manually recover. The rest should be fine. Oracle is of course fully supported and working fine so you can try with that DB as well and compare the results with PostgreSQL. What works with Oracle should work with PostgreSQL too.
OK, I've still got a little bit of code cleanup and pare down before I can be comfortable that the problem is isolated to postgresql, but the same code works perfectly with oracle... after a little XA datasource property fiddling. Apprently Oracle wants a single property with a jdbc url while postgresql wants the url components broken out into different properties.
Anyway, this is postgresql 8.3.3 with the postgresql-8.3-603.jdbc4.jar driver. The error that is in the tm logfile says "org.postgresql.xa.PGXAException: Transaction interleaving not implemented" which is what prompted my intial question about turning interleaving off... but I'm definately using the AtomikosDatasourceBean... not the older classes. If there is anything you could recommend that I look for in log files or something I'd greatly appreciate it, but I'll try to get this cleaned up and easy to produce to avoid wasting folks' time. Thanks again for all of the info! - Phillip
Hi Philip
Any news of your resolution of the Postgres error? I am using the same versions (Postgres 8.3.3, postgresql-8.3-603.jdbc3 as well as Spring 2.5.5, Hibernate 3.2.4.sp1, Atomikos Essentials 3.3.2) and get the same error: 08-08-15 12:50:24,906 [main] resume for XID eiss_tm_0000100018eiss_tm_1 raised -3: the XA resource detected an internal error org.postgresql.xa.PGXAException: Transaction interleaving not implemented I was wondering if Postgres will work at all for a JTA/XA commit across two data sources? Thx very much Aisling |