in saga-core-akka/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActor.java [145:165]
private void transact(Supplier<SagaResponse> responseSupplier) {
try {
if (isChosenChild(parentResponses)) {
SagaResponse sagaResponse = responseSupplier.get();
sendToChildren(new TransactMessage(request, sagaResponse));
getContext().become(transacted);
} else {
sendToChildren(new TransactMessage(request, SagaResponse.NONE_RESPONSE));
getContext().become(aborted);
}
} catch (SagaStartFailedException e) {
sendToParents(new FailMessage(e));
} catch (Exception e) {
log().error("Failed to run operation {} with error {}", request.transaction(), e);
Message abortMessage = new AbortMessage(new TransactionFailedException(e));
sendToParents(abortMessage);
sendToChildren(abortMessage);
getContext().become(aborted);
}
}