See failed jobs here:
http://172.17.131.2/view/XTS%20recovery/job/jbossts-branch416-xts-recovery-java6/61
http://172.17.131.2/view/XTS recovery/job/narayana-xts-recovery-java6/83
After looking at the trace output here:
You will see a message re-send:
rollback received for Participant org.jboss.jbossts.xts.servicetests.DurableTestParticipant.1 rollback received for Participant org.jboss.jbossts.xts.servicetests.DurableTestParticipant.1
This seems to cause the rule "trace delete participant and exit JVM" to be invoked twice:
21:17:52,893 INFO [stdout] (TaskWorker-1) rule.debug{trace receive Participant rollback} : rollback received for Participant org.jboss.jbossts.xts.servicetests.DurableTestParticipant.1
21:17:52,896 INFO [stdout] (TaskWorker-1) Rule.execute called for trace delete participant and exit JVM_10
21:17:52,897 INFO [stdout] (TaskWorker-1) HelperManager.install for helper classorg.jboss.byteman.rule.helper.Helper
21:17:52,899 INFO [stdout] (TaskWorker-1) calling installed(trace delete participant and exit JVM) for helper classorg.jboss.byteman.rule.helper.Helper
21:17:52,901 INFO [stdout] (TaskWorker-1) Installed rule using default helper : trace delete participant and exit JVM
21:17:52,903 INFO [stdout] (TaskWorker-1) trace delete participant and exit JVM execute
21:17:52,904 INFO [stdout] (TaskWorker-1) Rule.execute called for trace send Participant aborted_21
21:17:52,906 INFO [stdout] (TaskWorker-1) HelperManager.install for helper classorg.jboss.byteman.rule.helper.Helper
21:17:52,907 INFO [stdout] (TaskWorker-1) calling installed(trace send Participant aborted) for helper classorg.jboss.byteman.rule.helper.Helper
21:17:52,909 INFO [stdout] (TaskWorker-1) Installed rule using default helper : trace send Participant aborted
21:17:52,911 INFO [stdout] (TaskWorker-1) trace send Participant aborted execute
21:17:52,912 INFO [stdout] (TaskWorker-1) rule.debug{trace send Participant aborted} : aborted sent for Participant org.jboss.jbossts.xts.servicetests.DurableTestParticipant.1
21:17:52,915 INFO [stdout] (TaskWorker-3) Rule.execute called for trace delete participant and exit JVM_10
21:17:52,918 INFO [stdout] (TaskWorker-3) trace delete participant and exit JVM execute
This is because "XTSATRecoveryManagerImple.deleteParticipantRecoveryRecord" is invoked for both rollback messages.
Is this valid behaviour for XTS when dealing with message replays? If so, this Byteman script and any other susceptible to this issue need updating to only check for individual participant record removals.
We could complete the test when three or more participant records are removed, however, that would produce a false positive in the case where one participant record is not deleted and another is attempted for a second time.