ExtremeTransactions 6.0.116
Release notes for ExtremeTransactions 6.0.116

| |

Release notes for ExtremeTransactions 6.1.116

CORE IMPROVEMENTS: A SIMPLER AND SAFER (AND DOCUMENTED) CONCURRENCY MODEL

This release includes a optional safer threading and concurrency model for the core engine and performance improvements that come with it. The following 2 improvements all contribute to this goal, and are activated / disabled together - via the following feature flag:

com.atomikos.icatch.feature.207056=true

Feature207056
New designs for TransactionService and CompositeTransactionManager implementations

The new concurrency model is implemented by 2 new core classes:

  • DefaultTransactionService
  • DefaultCompositeTransactionManager

Feature205830
Performance with concurrent maps

The new core classes also use concurrent hashmaps for increased performance, as outlined in this contribution on GitHub.

CORE IMPROVEMENTS: CORE (SUB) TRANSACTION SUPPORT

Bug207055
Bug in timeout/rollback of local sub transaction followed by commit of its parent

Severity:4
Affected version(s):5.0.x, 6.0.x

Description

We now check for timeout of a local sub transaction when the parent transaction commits.

Technical details

Before this fix, a sub transaction could timeout but this would not block prepare of the parent transaction, leading to unnecessary prepare work and log warnings.

We now check for timeout and fail early when prepare is attempted.

Changes impacting client API

None.

Bug209259
Improve thread-safety of CheckedExportingTransactionManager

Severity:2
Affected version(s):6.0.x

See the full details on GitHub

CONNECTION POOL IMPROVEMENTS

Feature223216
Add support for non-pooled (one-off) connection use

You can now use our JTA/XA connections with you own connection pools.

Technical details

Our JTA/XA connection proxies would not work with external pools. This should now be possible.

Courtesy of the Open J Proxy team - thanks for contributing!

Also see the full details on GitHub.

Changes impacting client API

None, except using your own pools if you like.

Bug208965
Bug in borrowing connection: make waiting for available connections fair(er)

Severity:3
Affected version(s):6.0.x

Description

We now avoid that a growing pool's connections are "hijacked" by threads whose requests came in later than the waiting thread.

Technical details

The details are explained on GitHub.

Changes impacting client API

None.

INTEGRATION IMPROVEMENTS

Feature222983
Add Spring Boot 4 starter

You can now use Atomikos with Spring Boot 4

Changes impacting client API

Add the following dependency to your pom in order to use this starter:

   <dependency>
     <groupId>com.atomikos</groupId>
     <artifactId>transactions-spring-boot4-starter</artifactId>
     <version>...</version>
   </dependency>

Feature211078
Add Spring Boot 3.4 starter

You can now use Atomikos with Spring Boot 3.4

Changes impacting client API

Add the following dependency to your pom in order to use this starter:

   <dependency>
     <groupId>com.atomikos</groupId>
     <artifactId>transactions-spring-boot3.4-starter</artifactId>
     <version>...</version>
   </dependency>

Feature207758
Add Hibernate 7 example

You can now use our Hibernate 7 example for inspiration of your project.

Feature201715
Add JakartaEE example

You can now check a basic JakartaEE example.

Technical details

The 6.0 release line added support for JakartaEE, but without examples so far.

We have now added some.

Changes impacting client API

None.

Feature203242
Retry acquiring log file lock on startup

We now retry obtaining a file lock on startup.

Technical details

See the full details on GitHub.

Changes impacting client API

None.

Bug202466
Interposed Synchronisation not called on regular rollback

Severity:4
Affected version(s):6.0.x

Description

Interposed synchronisation instances are now also called on regular rollback.

Technical details

For details, see the original report on GitHub.

Changes impacting client API

None.

Bug209260
Move AtomikosSQLException to public package

Severity:4
Affected version(s):6.0.x

Description

Our AtomikosSQLException is now in the public package of module transactions-jdbc.

Technical details

This exception should not be in the "internal" package - for integration with OSGi this is the best solution. See the full details on GitHub.

Changes impacting client API

We don't expect applications to literally catch this specific exception so the impact should be none. If you do catch this exception in your code then you will have to change the import from com.atomikos.jdbc.internal to com.atomikos.jdbc.

Bug201646
Spring Boot 2 starter: use jta and jms versions of Spring Boot's POM for the starter project

Severity:4
Affected version(s):6.0.x

Description

We (and you) now use the jta and jms versions of Spring Boot's POM for the starter project.

Technical details

The JTA and JMS version dependencies are now aligned with Spring Boot.

We did this already for later Spring Boot integrations, but not yet for Spring Boot 2.

Changes impacting client API

None.

BugINTERNAL
Use h2 version compatible with latest hibernate (6) version

Severity:4
Affected version(s):6.0.x

Description

We now use a more recent h2 version.

Technical details

The pom of the Hibernate 6 examples project has been updated to use a better suitable h2 version.

Changes impacting client API

None.

Severity:4
Affected version(s):6.0.x

Description

Cleaned up the pom file for transactions-eclipselink.

Technical details

The pom file used to reference an extra repository - but it turns out this was not needed with some minor tweaks in the pom.

Changes impacting client API

None.

BugINTERNAL
OSGi service name version is outdated

Severity:4
Affected version(s):6.0.x

Description

The OSGi service name now has the correct version.

MISCELLANEOUS

FeatureINTERNAL
Add support for feature flags in the configuration properties

Features can now be enabled/disabled via feature flag support in the configuration properties:

com.atomikos.icatch.feature.<ID>=...

It can be set to true or false, and helps us with feature flags for risky code changes so we can always fallback to the previous behaviour.

Bug202474
Improve message when transaction was marked for rollback-only

Severity:3
Affected version(s):5.0.x, 6.0.x

Description

You now get a descriptive message that signals rollback-only instead of suggesting a timeout.

Technical details

The customer report is included with the full details below:

some of our applications occasionally log Exceptions like this during execution:

WARN  c.a.j.internal.AtomikosSQLException - The transaction has timed out - try increasing the timeout if needed
WARN  c.a.j.i.AtomikosJdbcConnectionProxy - Error enlisting in transaction - connection might be broken? Please check the logs for more information...

com.atomikos.jdbc.internal.AtomikosSQLException: The transaction has timed out - try increasing the timeout if needed
        at com.atomikos.jdbc.internal.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:29)
        at com.atomikos.jdbc.internal.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:40)
        at com.atomikos.jdbc.internal.AtomikosJdbcConnectionProxy.enlist(AtomikosJdbcConnectionProxy.java:97)
        at com.atomikos.jdbc.internal.AtomikosJdbcConnectionProxy.updateTransactionContext(AtomikosJdbcConnectionProxy.java:61)
        at com.atomikos.jdbc.internal.AbstractJdbcConnectionProxy.prepareStatement(AbstractJdbcConnectionProxy.java:64)

At first glance, developers thought of an transaction timeout problem, trying to increase the tx-timeout. But in this, timeout increasing did not help.  The reason for this exception was previous SQLException which went through a Spring @Transactional  method, marking the actual Transaction ‚rollback-only‘.

Changes impacting client API

Clearer reports in the log.

Bug207146
Avoid keeping the same open JDBC statements multiple times

Severity:3
Affected version(s):6.0.x

Description

We now avoid adding the same statement many times to the collection of open statements.

Technical details

We keep a collection of open JDBC statements so they can be closed when the JDBC connection is closed.

Our AbstractJdbcConnectionProxy class used to add a same statement multiple times to the collection of open statements and could lead to high memory consumption over time. This was fixed.

Changes impacting client API

None.

Bug207950
Unnecessary XA refresh on closing resource

Severity:3
Affected version(s):6.0.x

Description

We now avoid useless calls to the XAResource on close.

Technical details

Closing a resource would also remove it from the Configuration like this:

    public static RecoverableResource removeResource ( String name )
    {
        RecoverableResource ret = null;
        if ( name != null ) {
              ret = (RecoverableResource) resources_.remove ( name );
              if ( ret != null ) resourceList_.remove ( ret );

        }
        return ret;
    }

In particular, the additional removal from the resourceList would trigger a call to equals, which in turn expects the XAResource to be available. But this is problematic if the resource was already closed.

Solution: we removed the resourceList since it was not really required.

Changes impacting client API

None.

Bug212902
Improve exception message on enlist / timeout

Severity:4
Affected version(s):6.0.x

Description

You can now see more descriptive state information to assess timeout possibility.

Technical details

Instead of suggesting a timeout, we now hint at timeout and show the actual transaction state in the exception. This allows developers to assess the right actionable steps to take.

For more info, see GitHub

Changes impacting client API

None.

Feature218192
Add logCloudDsName to Spring Boot properties

You can now set the logCloudDsName via Spring Boot.

Technical details

Quoting the customer's report:

Regarding the (JNDI) name of the LogCloud datasource bean used by Atomikos for datasource lookup, there is actually a property com.atomikos.icatch.logcloud_datasource_name. However, this cannot be set in Spring Boot applications via spring.jta.atomikos.properties…, because this property is missing in SpringJtaAtomikosProperties and AtomikosProperties.

Changes impacting client API

You can now set this in Spring Boot via the logcloudDatasourceName property.

Feature218193
Allow using Hikari for the logCloudDataSource

You can now use a Hikari datasource for logging the the LogCloud. Just point to it via the logcloud datasource name property.

About Severity

The severity levels we use are defined in our support terms and conditions.

Available to customers only. Want to become a customer?

Free Trial

Add a comment

Corporate Information

Atomikos Corporate Headquarters
Hoveniersstraat, 39/1, 2800
Mechelen, Belgium

Contact Us

Copyright 2026 Atomikos BVBA | Our Privacy Policy
By using this site you agree to our cookies. More info. That's Fine