You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2020/05/04 22:38:34 UTC
[servicecomb-pack] 01/02: SCB-1852 Fixed Alpha UI query error when
the ES index not exits or empty
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit b55ddcff03068aa7592715beaa5fa707d97b37ec
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Sun May 3 19:35:26 2020 +0800
SCB-1852 Fixed Alpha UI query error when the ES index not exits or empty
---
.../ElasticsearchTransactionRepository.java | 68 +++++++++++++---------
1 file changed, 42 insertions(+), 26 deletions(-)
diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
index e612c17..c5b5a0f 100644
--- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
+++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/repository/elasticsearch/ElasticsearchTransactionRepository.java
@@ -31,6 +31,7 @@ import org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransac
import org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
import org.apache.servicecomb.pack.alpha.fsm.metrics.MetricsService;
import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
+import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
@@ -118,34 +119,49 @@ public class ElasticsearchTransactionRepository implements TransactionRepository
public PagingGlobalTransactions getGlobalTransactions(String state, int page, int size) {
//ElasticsearchTemplate.prepareScroll() does not add sorting https://jira.spring.io/browse/DATAES-457
long start = System.currentTimeMillis();
+ PagingGlobalTransactions pagingGlobalTransactions = PagingGlobalTransactions.builder().build();
List<GlobalTransaction> globalTransactions = new ArrayList();
- QueryBuilder query;
- if (state != null && state.trim().length() > 0) {
- query = QueryBuilders.termQuery("state.keyword", state);
- } else {
- query = QueryBuilders.matchAllQuery();
- }
- SearchResponse response = this.template.getClient().prepareSearch(INDEX_NAME)
- .setTypes(INDEX_TYPE)
- .setQuery(query)
- .addSort(SortBuilders.fieldSort("beginTime").order(SortOrder.DESC))
- .setSize(size)
- .setFrom(page * size)
- .execute()
- .actionGet();
- ObjectMapper jsonMapper = new ObjectMapper();
- response.getHits().forEach(hit -> {
- try {
- GlobalTransactionDocument dto = jsonMapper
- .readValue(hit.getSourceAsString(), GlobalTransactionDocument.class);
- globalTransactions.add(dto);
- } catch (Exception e) {
- LOG.error(e.getMessage(), e);
+ try{
+ IndicesExistsRequest request = new IndicesExistsRequest(INDEX_NAME);
+ if (this.template.getClient().admin().indices().exists(request).actionGet().isExists()) {
+ QueryBuilder query;
+ if (state != null && state.trim().length() > 0) {
+ query = QueryBuilders.termQuery("state.keyword", state);
+ } else {
+ query = QueryBuilders.matchAllQuery();
+ }
+ SearchResponse response = this.template.getClient().prepareSearch(INDEX_NAME)
+ .setTypes(INDEX_TYPE)
+ .setQuery(query)
+ .addSort(SortBuilders.fieldSort("beginTime").order(SortOrder.DESC).missing("_last"))
+ .setSize(size)
+ .setFrom(page * size)
+ .execute()
+ .actionGet();
+ ObjectMapper jsonMapper = new ObjectMapper();
+ response.getHits().forEach(hit -> {
+ try {
+ GlobalTransactionDocument dto = jsonMapper
+ .readValue(hit.getSourceAsString(), GlobalTransactionDocument.class);
+ globalTransactions.add(dto);
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ });
+ pagingGlobalTransactions = PagingGlobalTransactions.builder().page(page).size(size).total(response.getHits().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();
}
- });
- LOG.info("Query total hits {}, return page {}, size {}", response.getHits().getTotalHits(), page, size);
- return PagingGlobalTransactions.builder().page(page).size(size).total(response.getHits().getTotalHits())
- .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;
}
public Map<String, Long> getTransactionStatistics() {