public PagingGlobalTransactions getGlobalTransactions()

in alpha/alpha-spec-saga-akka/src/main/java/org/apache/servicecomb/pack/alpha/spec/saga/akka/repository/elasticsearch/ElasticsearchTransactionRepository.java [108:146]


  public PagingGlobalTransactions getGlobalTransactions(String state, int page, int size) {
    long start = System.currentTimeMillis();
    PagingGlobalTransactions pagingGlobalTransactions;
    List<GlobalTransaction> globalTransactions = new ArrayList();
    try{
      if (this.template.indexOps(IndexCoordinates.of(INDEX_NAME)).exists()) {
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        //queryBuilder.withSearchType(SearchType.valueOf(INDEX_TYPE));
        if (state != null && state.trim().length() > 0) {
          queryBuilder.withQuery(QueryBuilders.termQuery("state.keyword", state));
        } else {
          queryBuilder.withQuery(QueryBuilders.matchAllQuery());
        }
        queryBuilder.withSort(SortBuilders.fieldSort("beginTime").order(SortOrder.DESC).unmappedType("date"));
        queryBuilder.withPageable(PageRequest.of(page, size));

        SearchHits<GlobalTransactionDocument> result = this.template.search(queryBuilder.build(), GlobalTransactionDocument.class);
        result.forEach(hit -> {
          try {
            globalTransactions.add(hit.getContent());
          } catch (Exception e) {
            LOG.error(e.getMessage(), e);
          }
        });
        pagingGlobalTransactions = PagingGlobalTransactions.builder().page(page).size(size).total(result.getTotalHits())
            .globalTransactions(globalTransactions).elapsed(System.currentTimeMillis() - start).build();
      } else {
        LOG.warn("[alpha_global_transaction] index not exist");
        pagingGlobalTransactions = PagingGlobalTransactions.builder().page(page).size(size).total(0)
            .globalTransactions(globalTransactions).elapsed(System.currentTimeMillis() - start).build();
      }
    }catch (Exception ex){
      LOG.error(ex.getMessage(),ex);
      pagingGlobalTransactions = PagingGlobalTransactions.builder().page(page).size(size).total(0)
          .globalTransactions(globalTransactions).elapsed(System.currentTimeMillis() - start).build();
    }
    LOG.info("Query total hits {}, return page {}, size {}", pagingGlobalTransactions.getTotal(), page, size);
    return pagingGlobalTransactions;
  }