- CORE IMPROVEMENTS: A SIMPLER AND SAFER (AND DOCUMENTED) CONCURRENCY MODEL
- CORE IMPROVEMENTS: CORE (SUB) TRANSACTION SUPPORT
- CONNECTION POOL IMPROVEMENTS
- INTEGRATION IMPROVEMENTS
- Feature222983Add Spring Boot 4 starter
- Feature211078Add Spring Boot 3.4 starter
- Feature207758Add Hibernate 7 example
- Feature201715Add JakartaEE example
- Feature203242Retry acquiring log file lock on startup
- Bug202466Interposed Synchronisation not called on regular rollback
- Bug209260Move AtomikosSQLException to public package
- Bug201646Spring Boot 2 starter: use jta and jms versions of Spring Boot's POM for the starter project
- BugINTERNALUse h2 version compatible with latest hibernate (6) version
- BugINTERNALCleanup pom for transactions-eclipselink
- BugINTERNALOSGi service name version is outdated
-
- MISCELLANEOUS
- FeatureINTERNALAdd support for feature flags in the configuration properties
- Bug202474Improve message when transaction was marked for rollback-only
- Bug207146Avoid keeping the same open JDBC statements multiple times
- Bug207950Unnecessary XA refresh on closing resource
- Bug212902Improve exception message on enlist / timeout
-
- Feature218192Add logCloudDsName to Spring Boot properties
- Feature218193Allow using Hikari for the logCloudDataSource
- About Severity
- Available to customers only. Want to become a customer?
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 |
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.
BugINTERNAL Cleanup pom for transactions-eclipselink
| 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 GitHubChanges 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.

Add a comment