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