Ex­tremeTrans­ac­tions 5.0.109
Ex­tremeTrans­ac­tions 5.0.109 re­lease notes

Fea­ture200360
Sub­scrip­tion files are now re­quired for pro­duc­tion use

De­scrip­tion

We now re­quire cus­tomers to in­stall sub­scrip­tion files for pro­duc­tion use, sim­i­lar to what we do in 6.0.

Tech­ni­cal de­tails

We've had some bad ex­pe­ri­ences with sub­scrip­tions pur­chased via re­sellers / in­ter­me­di­aries, that were first used by a de­vel­op­ment team, then moved onto oth­er teams in pro­duc­tion with­out us be­ing able to keep track. This has lead to un­pleas­ant ex­pe­ri­ences for both our cus­tomers and our­selves.

For more de­tails, see this doc­u­men­ta­tion page.

Changes im­pact­ing client API

You need to in­stall 2 files as ex­plained on the doc­u­men­ta­tion page men­tioned above. Note: de­vel­op­ment or test­ing use does not need sub­scrip­tion files.

Fea­ture201309
De­tect vul­ner­a­ble de­pen­den­cies on class­path

De­scrip­tion

We now help you find out about known vul­ner­a­ble maven de­pen­den­cies that your ap­pli­ca­tion is us­ing.

Tech­ni­cal de­tails

With cur­rent hack­er ef­forts mov­ing more and more into the ap­pli­ca­tion stack via vul­ner­a­ble open source de­pen­den­cies, we no­tice cus­tomers are get­ting wor­ried (or fac­ing au­dits of their ap­pli­ca­tions). Log4j, any­one?

Our ap­proach has been two-fold:

  • We avoid 3rd par­ty de­pen­den­cies so you can't pull them in by ac­ci­dent, and
  • We now also de­tect known vul­ner­a­ble 3rd par­ty maven de­pen­den­cies on your ap­pli­ca­tion's class­path

Start­ing in the near fu­ture, ex­pect more and more "se­cu­ri­ty up­dates" in that re­spect.

Changes im­pact­ing client API

None.

Bug197240
Al­low spring.jta prop­er­ties in Spring Boot starter

Sever­i­ty:4
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

Any spring.jta prop­er­ties in Spring Boot should now be tak­en into ac­count.

Tech­ni­cal de­tails

After the Spring Boot team con­tributed the source code for their Atomikos starter we thought it was safer to ig­nore any prop­er­ties with the "lega­cy" pre­fix spring.jta.atom­ikos.prop­er­ties (in your ap­pli­ca­tion.prop­er­ties file for Spring Boot).

This has proven to con­fuse users, so we now take such spring.jta prop­er­ties into ac­count.

Changes im­pact­ing client API

Any spring.jta prop­er­ties in Spring Boot should now be tak­en into ac­count.

Bug197505
Avoid that de­faults in the Spring Boot starter over­ride jta.prop­er­ties

Sever­i­ty:4
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

You can now count on the prop­er­ty val­ues from jta.prop­er­ties to be tak­en into ac­count even with Spring Boot.

Tech­ni­cal de­tails

The Atomikos JTA prop­er­ties im­ple­men­ta­tion in our Spring Boot starter would de­fine de­fault val­ues for many prop­er­ties, mean­ing that their val­ue spec­i­fied jta.prop­er­ties would not be tak­en into ac­count. This has now been fixed.

Changes im­pact­ing client API

Your prop­er­ties spec­i­fied in jta.prop­er­ties should now work.

Bug197362
Clar­i­fy mes­sage if rest port not set in client

Sever­i­ty:1/2/3/4
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

You can now count on a bet­ter er­ror mes­sage when the AtomikosRestPort URL is not set (for trans­ac­tions across re­mot­ing calls).

Tech­ni­cal de­tails

When the AtomikosRestPort URL was not set, the client tem­plate would re­port a mis­lead­ing mes­sage say­ing that there is no trans­ac­tion for the thread. In­stead, the root cause is a URL that is miss­ing - so we fixed that for you.

Changes im­pact­ing client API

None.

Bug197506
Sup­port di­a­mond case ar­chi­tec­tures for read­On­ly re­mot­ing

Sever­i­ty:4
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

You can now use tran­si­tive read­On­ly re­mot­ing trans­ac­tions in all cas­es.

Tech­ni­cal de­tails

As out­lined in this GitHub is­sue there was a prob­lem with read­On­ly in­vo­ca­tions when:

  • the same shared ser­vice was called over dif­fer­ent paths, and
  • all in­vo­ca­tions were read­On­ly

This is known as a "di­a­mond case" be­cause the in­vo­ca­tion di­a­gram looks like a di­a­mond.

This is­sue has been fixed in the fol­low­ing way: our prod­uct will now avoid the read­On­ly op­ti­mi­sa­tion in this spe­cif­ic sce­nario. This is still cor­rect, at a mi­nor per­for­mance over­head in the ex­ot­ic cas­es where this does hap­pen.

Changes im­pact­ing client API

None.

Bug197253
Sus­pend/re­sume should not change lo­cal sib­ling count

Sever­i­ty:2
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

You can now use @Re­quiresNew with im­port­ed trans­ac­tions.

Tech­ni­cal de­tails

As ex­plained in this GitHub is­sue, there were prob­lems when a re­mote trans­ac­tion was im­port­ed and then sub­se­quent­ly called lo­cal log­ic that was marked with @Re­quiresNew. As re­quired by the spec­i­fi­ca­tion of @Re­quiresNew, this would sus­pend any ac­tive trans­ac­tion - and re­sume it lat­er.

Our code had a side ef­fect of sus­pend/re­sume that changed the lo­cal sib­ling count.

Si­b­ling counts help de­tect or­phaned in­vo­ca­tions (and their trans­ac­tion­al up­dates to per­sis­tent stor­age) that arise out of lost replies. For in­stance, con­sid­er this sce­nario with ser­vices A and B:

  1. A starts a trans­ac­tion.
  2. A calls B as part of that trans­ac­tion.
  3. B does work and re­turns a re­sult.
  4. A does not re­ceive the re­sult due to a net­work time­out (so B now has an or­phaned in­vo­ca­tion).
  5. A tries again, so B per­forms the changes again and re­turns a new re­sult (in the same trans­ac­tion).
  6. A com­mits the trans­ac­tion think­ing it only up­dat­ed B once.
  7. B com­mits the same trans­ac­tion with two sets of up­dates.

This risk here is the dif­fer­ent views of A and B re­gard­ing the scope of the trans­ac­tion: A thinks it com­mits one up­date to B, where­as B com­mits two dif­fer­ent up­dates. This can be a prob­lem for data con­sis­ten­cy, so we avoid this by keep­ing sib­ling counts at B and A. A con­structs its sib­ling count pic­ture with each re­sult it ac­tu­al­ly re­ceives with its replies from A. Be­fore com­mit, A pass­es on the "count" it has for in­vo­ca­tions at B, and if B finds that there is no match then it re­fus­es to com­mit.

This would avoid the prob­lem out­lined above, be­cause in step 4 ser­vice A will miss a count, so in step 6 ser­vice A will pass a count of 1 for ser­vice B, where­as B will see 2 and re­fus­es the com­mit process.

In short, sib­ling counts have their pur­pose. How­ev­er due to a bug, this was af­fect­ed by a sus­pend/re­sume at ser­vice B (when it has @Re­quiresNew log­ic in­side).

Changes im­pact­ing client API

You should now be able to con­fig­ure @Re­quiresNew on any ser­vice that needs it.

Bug211208
Avoid init-ing con­nec­tion fac­to­ry twice or more on Tom­cat JNDI lookups

Sever­i­ty:4
Af­fect­ed ver­sion(s):5.0.x

De­scrip­tion

You should now be able to per­form any num­ber of JNDI lookups in Tom­cat with­out get­ting warn­ings about the re­source al­ready ex­ist­ing with the same name.

Tech­ni­cal de­tails

Dur­ing JNDI lookups, Tom­cat ap­pli­ca­tions would some­times get warn­ings like be­low due to a race con­di­tion. This has been fixed.

WARNING: Cannot initialize AtomikosConnectionFactoryBean
java.lang.IllegalStateException: Another resource already exists with name XAConnectionFactory - pick a different name
      at com.atomikos.icatch.config.Configuration.addResource(Configuration.java:241)
      at com.atomikos.jms.AtomikosConnectionFactoryBean.doInit(AtomikosConnectionFactoryBean.java:440)
      at com.atomikos.jms.AtomikosConnectionFactoryBean.init(AtomikosConnectionFactoryBean.java:354)
      at com.atomikos.jms.AtomikosConnectionFactoryBean.createConnection(AtomikosConnectionFactoryBean.java:620)

Changes im­pact­ing client API

None.

About Sever­i­ty

The sever­i­ty lev­els we use are de­fined in our sup­port terms and con­di­tions.

Avail­able to cus­tomers only. Want to be­come a cus­tomer?

Free Tr­i­al
RSS

Comments

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