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 c9a2d54512cbc4c99a303d0d9e27fac61de21bb7 Author: Lei Zhang <[email protected]> AuthorDate: Fri Aug 9 11:11:44 2019 +0800 SCB-1411 Number Abbreviation --- .../ElasticsearchTransactionRepository.java | 50 +++++++++++++--------- .../main/resources/static/js/alpha-dashboard.js | 8 +++- 2 files changed, 37 insertions(+), 21 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 8a5b644..fe8f49a 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 @@ -23,6 +23,7 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -30,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.stats.IndicesStatsResponse; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.index.query.QueryBuilder; @@ -156,14 +158,19 @@ public class ElasticsearchTransactionRepository implements TransactionRepository TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders .terms("count_group_by_state").field("state.keyword"); SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withIndices(INDEX_NAME) .addAggregation(termsAggregationBuilder) .build(); return this.template.query(searchQuery, response -> { - final StringTerms groupState = response.getAggregations().get("count_group_by_state"); - return groupState.getBuckets() - .stream() - .collect(Collectors.toMap(MultiBucketsAggregation.Bucket::getKeyAsString, - MultiBucketsAggregation.Bucket::getDocCount)); + Map<String, Long> statistics = new HashMap<>(); + if (response.getHits().totalHits > 0) { + final StringTerms groupState = response.getAggregations().get("count_group_by_state"); + statistics = groupState.getBuckets() + .stream() + .collect(Collectors.toMap(MultiBucketsAggregation.Bucket::getKeyAsString, + MultiBucketsAggregation.Bucket::getDocCount)); + } + return statistics; }); } @@ -172,21 +179,24 @@ public class ElasticsearchTransactionRepository implements TransactionRepository // ElasticsearchTemplate.prepareScroll() does not add sorting https://jira.spring.io/browse/DATAES-457 ObjectMapper jsonMapper = new ObjectMapper(); List<GlobalTransaction> globalTransactions = new ArrayList(); - SearchResponse response = this.template.getClient().prepareSearch(INDEX_NAME) - .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) - .setQuery(QueryBuilders.matchAllQuery()) - .addSort(SortBuilders.fieldSort("durationTime").order(SortOrder.DESC)) - .setFrom(0).setSize(10).setExplain(true) - .get(); - response.getHits().forEach(hit -> { - try { - GlobalTransactionDocument dto = jsonMapper - .readValue(hit.getSourceAsString(), GlobalTransactionDocument.class); - globalTransactions.add(dto); - } catch (Exception e) { - LOG.error(e.getMessage(), e); - } - }); + IndicesStatsResponse indicesStatsResponse = this.template.getClient().admin().indices().prepareStats(INDEX_NAME).get(); + if(indicesStatsResponse.getIndices().get(INDEX_NAME).getTotal().docs.getCount()>0){ + SearchResponse response = this.template.getClient().prepareSearch(INDEX_NAME) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setQuery(QueryBuilders.matchAllQuery()) + .addSort(SortBuilders.fieldSort("durationTime").order(SortOrder.DESC)) + .setFrom(0).setSize(10).setExplain(true) + .get(); + response.getHits().forEach(hit -> { + try { + GlobalTransactionDocument dto = jsonMapper + .readValue(hit.getSourceAsString(), GlobalTransactionDocument.class); + globalTransactions.add(dto); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + } + }); + } return globalTransactions; } diff --git a/alpha/alpha-ui/src/main/resources/static/js/alpha-dashboard.js b/alpha/alpha-ui/src/main/resources/static/js/alpha-dashboard.js index 483ff79..ba63d90 100644 --- a/alpha/alpha-ui/src/main/resources/static/js/alpha-dashboard.js +++ b/alpha/alpha-ui/src/main/resources/static/js/alpha-dashboard.js @@ -114,6 +114,12 @@ $(document).ready(function () { x -= x % 3; more = Math.round(n * d / p(10, x)) % d; y = Math.round(n * d / p(10, x)) / d + " kMGTPE"[x / 3]; - return more==0?y:y+'+'; + return more == 0 ? y : y + '+'; + } + + function millisToMinutesAndSeconds(millis) { + var minutes = Math.floor(millis / 60000); + var seconds = ((millis % 60000) / 1000).toFixed(0); + return minutes + ":" + (seconds < 10 ? '0' : '') + seconds; } }); \ No newline at end of file
