private void transact()

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);
    }
  }