In modern Java architectures, flexibility isn’t a luxury — it’s a requirement.
com.atomikos.icatch.feature.207056=true
The new concurrency model is implemented by 2 new core classes:
| Severity: | 4 |
|---|---|
| Affected version(s): | 5.0.x, 6.0.x |
We now check for timeout of a local sub transaction when the parent transaction commits.
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.
None.
| Severity: | 2 |
|---|---|
| Affected version(s): | 6.0.x |
You can now use our JTA/XA connections with your own connection pools.
Our JTA/XA connection proxies would not work with external pools. This should now be possible.
Based on a contribution from Open J Proxy (OJP) - an open source database proxy that supports distributed transactions.Courtesy of the Open J Proxy team - thanks for contributing!
Also see the full details on GitHub.AtomikosNonPoolingDataSourceBean as the datasource.
| Severity: | 3 |
|---|---|
| Affected version(s): | 6.0.x |
We now avoid that a growing pool's connections are "hijacked" by threads whose requests came in later than the waiting thread.
None.
You can now use Atomikos with Spring Boot 4
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>
You can now use Atomikos with Spring Boot 3.4
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>
You can now use our Hibernate 7 example for inspiration of your project.
You can now check a basic JakartaEE example.
The 6.0 release line added support for JakartaEE, but without examples so far.
We have now added some.
None.
We now retry obtaining a file lock on startup.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
Interposed synchronisation instances are now also called on regular rollback.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
Our AtomikosSQLException is now in the public package of module transactions-jdbc.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
We (and you) now use the jta and jms versions of Spring Boot's POM for the starter project.
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.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
We now use a more recent h2 version.
The pom of the Hibernate 6 examples project has been updated to use a better suitable h2 version.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
Cleaned up the pom file for transactions-eclipselink.
The pom file used to reference an extra repository - but it turns out this was not needed with some minor tweaks in the pom.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
The OSGi service name now has the correct version.
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.
| Severity: | 3 |
|---|---|
| Affected version(s): | 5.0.x, 6.0.x |
You now get a descriptive message that signals rollback-only instead of suggesting a timeout.
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‘.
Clearer reports in the log.
| Severity: | 3 |
|---|---|
| Affected version(s): | 6.0.x |
We now avoid adding the same statement many times to the collection of open statements.
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.
None.
| Severity: | 3 |
|---|---|
| Affected version(s): | 6.0.x |
We now avoid useless calls to the XAResource on close.
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.
None.
| Severity: | 4 |
|---|---|
| Affected version(s): | 6.0.x |
You can now see more descriptive state information to assess timeout possibility.
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 GitHubNone.
Release notes for ExtremeTransactions 6.1.116
Stop gambling with your data integrity.
From debunking the "XA is slow" myth to solving cloud-native recovery with LogCloud, we are showing you how to reclaim your developer productivity and bring 100% atomicity to your microservices.