in saga-core/src/main/java/org/apache/servicecomb/saga/core/CompensationTaskConsumer.java [54:68]
public boolean replay(Collection<Node<SagaRequest>> nodes) {
for (Iterator<Node<SagaRequest>> iterator = nodes.iterator(); iterator.hasNext(); ) {
SagaRequest request = iterator.next().value();
if (sagaContext.isCompensationCompleted(request)) {
log.info("Skipped completed compensation id={} operation={} while replay", request.id(), request.transaction());
iterator.remove();
} else if (!sagaContext.isTransactionCompleted(request)) {
// this transaction never started
log.info("Skipped pending transaction id={} operation={} while replay", request.id(), request.transaction());
iterator.remove();
}
}
return !nodes.isEmpty();
}