Kieth, I would let Weston to explain the exact use case from an XA pov, as he has more details and knowledge about the use case.
Instead I will try to explain the root cause and the fix I made.
By default the JMS client will replay unacked message transfers (after failover) in it's replay buffer unless the session is marked transacted.
(If we allow replay in a transacted session, then we will have messages produced or consumed outside of the transaction boundaries, which violates atomocity).
For XA transactions the same applies. If we replay messages after failover it will result in messages consumed or produced outside of the transaction boundaries.
However the XA implementation does not use a transacted JMS session underneath as the transaction is governed by the XA manager.
So it uses an AUTO_ACKED session underneath, which replays message transfers after failover.
The patch I submitted allows this to be turned off based on a boolean argument.
Does that make sense? If it's still not clear please feel free to ask further questions.