]
Michael Musgrove updated JBTM-2977:
-----------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
Participants should not be told to compensate after completion
--------------------------------------------------------------
Key: JBTM-2977
URL:
https://issues.jboss.org/browse/JBTM-2977
Project: JBoss Transaction Manager
Issue Type: Bug
Components: LRA
Affects Versions: 5.7.1.Final
Reporter: Nicola Ferraro
Assignee: Michael Musgrove
When a LRA is closed the coordinator behaves incorrectly if a participant is slow to
respond.
While the call to "/complete" is still ongoing, the coordinator (recovery
module) may issue a second call to "/compensate", making it impossible for the
participant to determine when a LRA is really closed.
The LRA coordinator must choose a single outcome for the LRA and be consistent with that
(retrying until all participants are in status complete/failedtocomplete in this case).
A second minor problem is that the call to "/close" is synchronous, and the
caller is kept attached forever if the participant does not respond to
"/complete". It would be better to establish a timeout and return a
"Completing" status if not all participant are done in time.
I attach few simple steps to reproduce it with shell commands.