A BA participant can be left forever in state Completed if the coordinator crashes between completion of the participant and close or cancel of the business activity in which it is enlisted. In this case there is a participant log record in the participant host transaction log and no record of the transacttion or participant in the coordinator host transaction log. This means that the participant will continue sending Completed messages to the coordinator even after reboot of the participant host. The BA spec requires the coordinator to ignore such messages. Thenett result is garbage in the participant log and garbage messages on the network.
The participant is at liberty to dispatch a GetStatus message in place of the Completed message, either during normal operation or at reboot. The coordinator must reply with a Status message identifying the participant state or it may dispatch a soap fault. This can be used to identify that the participant is no longer active.
The current implementation should be modified to switch from sending Completed messages to sending GetStatus messages. During normal operation this should occur after some number of resends have failed to elicit a response. During recovery this should occur when the participant is reinstated. If a valid Status message is received the participant should revert to sending Completed messages and continue to do so until a state change occurs or the appropriate criterion is met for switching to sending GetStatus messages again.