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 2019/08/10 07:50:25 UTC

[servicecomb-pack] 20/36: SCB-1411 Number Abbreviation

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 <co...@gmail.com>
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