public void stopSagaData()

in alpha/alpha-spec-saga-akka/src/main/java/org/apache/servicecomb/pack/alpha/spec/saga/akka/spring/integration/akka/SagaDataExtension.java [59:93]


    public void stopSagaData(String globalTxId, SagaData sagaData) {
      this.putSagaData(globalTxId, sagaData);
      if (sagaData.getLastState() == SagaActorState.COMMITTED) {
        this.metricsService.metrics().doCommitted();
      } else if (sagaData.getLastState() == SagaActorState.COMPENSATED) {
        this.metricsService.metrics().doCompensated();
      } else if (sagaData.getLastState() == SagaActorState.SUSPENDED) {
        this.metricsService.metrics().doSuspended();
      }
      List<SagaSubTransaction> subTransactions = new ArrayList();
      sagaData.getTxEntities().forEach((k,v)->{
        subTransactions.add(SagaSubTransaction.builder()
            .parentTxId(v.getParentTxId())
            .localTxId(v.getLocalTxId())
            .beginTime(v.getBeginTime())
            .endTime(v.getEndTime())
            .state(v.getState())
            .build());
      });
      GlobalTransaction record = GlobalTransaction.builder()
          .type(TransactionType.SAGA)
          .serviceName(sagaData.getServiceName())
          .instanceId(sagaData.getInstanceId())
          .globalTxId(sagaData.getGlobalTxId())
          .beginTime(sagaData.getBeginTime())
          .endTime(sagaData.getEndTime())
          .state(sagaData.getLastState().name())
          .subTxSize(sagaData.getTxEntities().size())
          .subTransactions(subTransactions)
          .events(sagaData.getEvents())
          .suspendedType(sagaData.getSuspendedType())
          .build();
      repositoryChannel.send(record);
      sagaDataMap.remove(globalTxId);
    }