You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@skywalking.apache.org by GitBox <gi...@apache.org> on 2018/03/09 07:19:57 UTC

[GitHub] wu-sheng closed pull request #919: Fixed/918

wu-sheng closed pull request #919: Fixed/918
URL: https://github.com/apache/incubator-skywalking/pull/919
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java
index 5fce0f777..ea7396e0e 100644
--- a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java
+++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java
@@ -18,6 +18,8 @@
 
 package org.apache.skywalking.apm.collector.remote.grpc.service;
 
+import org.apache.skywalking.apm.collector.core.util.Const;
+import org.apache.skywalking.apm.collector.core.util.StringUtils;
 import org.apache.skywalking.apm.collector.remote.grpc.proto.RemoteData;
 import org.apache.skywalking.apm.collector.remote.service.RemoteSerializeService;
 
@@ -29,7 +31,11 @@
     @Override public RemoteData.Builder serialize(org.apache.skywalking.apm.collector.core.data.RemoteData data) {
         RemoteData.Builder builder = RemoteData.newBuilder();
         for (int i = 0; i < data.getDataStringsCount(); i++) {
-            builder.addDataStrings(data.getDataString(i));
+            if (StringUtils.isNotEmpty(data.getDataString(i))) {
+                builder.addDataStrings(data.getDataString(i));
+            } else {
+                builder.addDataStrings(Const.EMPTY_STRING);
+            }
         }
         for (int i = 0; i < data.getDataIntegersCount(); i++) {
             builder.addDataIntegers(data.getDataInteger(i));
diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
index d3d7eff89..537846beb 100644
--- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
+++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
@@ -160,7 +160,7 @@ private Long heartBeatTime(AbstractQueryBuilder queryBuilder) {
 
     @Override
     public List<AppServerInfo> searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) {
-        logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, startSecondTimeBucket, endSecondTimeBucket);
+        logger.debug("get instances info, keyword: {}, startSecondTimeBucket: {}, endSecondTimeBucket: {}", keyword, startSecondTimeBucket, endSecondTimeBucket);
         SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceTable.TABLE);
         searchRequestBuilder.setTypes(InstanceTable.TABLE_TYPE);
         searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
@@ -172,7 +172,6 @@ private Long heartBeatTime(AbstractQueryBuilder queryBuilder) {
         }
         boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE));
 
-        //TODO second
         BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
         timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
         timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceNameServiceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceNameServiceEsUIDAO.java
index 341c2ea4b..da385aac9 100644
--- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceNameServiceEsUIDAO.java
+++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceNameServiceEsUIDAO.java
@@ -21,6 +21,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.apm.collector.core.util.StringUtils;
 import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceNameServiceUIDAO;
 import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO;
 import org.apache.skywalking.apm.collector.storage.table.register.ServiceNameTable;
@@ -59,11 +60,14 @@ public ServiceNameServiceEsUIDAO(ElasticSearchClient client) {
         searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
         searchRequestBuilder.setSize(topN);
 
-        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
-        boolQuery.must().add(QueryBuilders.matchQuery(ServiceNameTable.COLUMN_SERVICE_NAME, keyword));
-        boolQuery.must().add(QueryBuilders.termQuery(ServiceNameTable.COLUMN_SRC_SPAN_TYPE, SpanType.Entry_VALUE));
-
-        searchRequestBuilder.setQuery(boolQuery);
+        if (StringUtils.isNotEmpty(keyword)) {
+            BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+            boolQuery.must().add(QueryBuilders.matchQuery(ServiceNameTable.COLUMN_SERVICE_NAME, keyword));
+            boolQuery.must().add(QueryBuilders.termQuery(ServiceNameTable.COLUMN_SRC_SPAN_TYPE, SpanType.Entry_VALUE));
+            searchRequestBuilder.setQuery(boolQuery);
+        } else {
+            searchRequestBuilder.setQuery(QueryBuilders.termQuery(ServiceNameTable.COLUMN_SRC_SPAN_TYPE, SpanType.Entry_VALUE));
+        }
 
         SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
         SearchHit[] searchHits = searchResponse.getHits().getHits();
diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java
index 5e7f699d4..6ccf59647 100644
--- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java
+++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java
@@ -77,6 +77,9 @@ Topology build(List<IApplicationComponentUIDAO.ApplicationComponent> application
         Map<Integer, String> components = changeNodeComp2Map(applicationComponents);
         Map<Integer, Integer> mappings = changeMapping2Map(applicationMappings);
 
+        filterZeroSourceOrTargetReference(callerReferenceMetric);
+        filterZeroSourceOrTargetReference(calleeReferenceMetric);
+
         calleeReferenceMetric = calleeReferenceMetricFilter(calleeReferenceMetric);
 
         List<Node> nodes = new LinkedList<>();
@@ -124,20 +127,24 @@ Topology build(List<IApplicationComponentUIDAO.ApplicationComponent> application
         });
 
         List<Call> calls = new LinkedList<>();
+        Set<Integer> nodeIds = new HashSet<>();
         callerReferenceMetric.forEach(referenceMetric -> {
             Application source = applicationCacheService.getApplicationById(referenceMetric.getSource());
             Application target = applicationCacheService.getApplicationById(referenceMetric.getTarget());
 
             if (BooleanUtils.valueToBoolean(target.getIsAddress()) && !mappings.containsKey(target.getApplicationId())) {
-                ConjecturalNode conjecturalNode = new ConjecturalNode();
-                conjecturalNode.setId(target.getApplicationId());
-                conjecturalNode.setName(target.getApplicationCode());
-                conjecturalNode.setType(components.getOrDefault(target.getApplicationId(), Const.UNKNOWN));
-                nodes.add(conjecturalNode);
+                if (!nodeIds.contains(target.getApplicationId())) {
+                    ConjecturalNode conjecturalNode = new ConjecturalNode();
+                    conjecturalNode.setId(target.getApplicationId());
+                    conjecturalNode.setName(target.getApplicationCode());
+                    conjecturalNode.setType(components.getOrDefault(target.getApplicationId(), Const.UNKNOWN));
+                    nodes.add(conjecturalNode);
+                    nodeIds.add(target.getApplicationId());
+                }
             }
 
-            Set<Integer> nodeIds = buildNodeIds(nodes);
-            if (!nodeIds.contains(source.getApplicationId())) {
+            Set<Integer> applicationNodeIds = buildNodeIds(nodes);
+            if (!applicationNodeIds.contains(source.getApplicationId())) {
                 ApplicationNode applicationNode = new ApplicationNode();
                 applicationNode.setId(source.getApplicationId());
                 applicationNode.setName(source.getApplicationCode());
@@ -170,19 +177,25 @@ Topology build(List<IApplicationComponentUIDAO.ApplicationComponent> application
             Application target = applicationCacheService.getApplicationById(referenceMetric.getTarget());
 
             if (source.getApplicationId() == Const.NONE_APPLICATION_ID) {
-                VisualUserNode visualUserNode = new VisualUserNode();
-                visualUserNode.setId(source.getApplicationId());
-                visualUserNode.setName(Const.USER_CODE);
-                visualUserNode.setType(Const.USER_CODE.toUpperCase());
-                nodes.add(visualUserNode);
+                if (!nodeIds.contains(source.getApplicationId())) {
+                    VisualUserNode visualUserNode = new VisualUserNode();
+                    visualUserNode.setId(source.getApplicationId());
+                    visualUserNode.setName(Const.USER_CODE);
+                    visualUserNode.setType(Const.USER_CODE.toUpperCase());
+                    nodes.add(visualUserNode);
+                    nodeIds.add(source.getApplicationId());
+                }
             }
 
             if (BooleanUtils.valueToBoolean(source.getIsAddress())) {
-                ConjecturalNode conjecturalNode = new ConjecturalNode();
-                conjecturalNode.setId(source.getApplicationId());
-                conjecturalNode.setName(source.getApplicationCode());
-                conjecturalNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN));
-                nodes.add(conjecturalNode);
+                if (!nodeIds.contains(source.getApplicationId())) {
+                    ConjecturalNode conjecturalNode = new ConjecturalNode();
+                    conjecturalNode.setId(source.getApplicationId());
+                    conjecturalNode.setName(source.getApplicationCode());
+                    conjecturalNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN));
+                    nodeIds.add(source.getApplicationId());
+                    nodes.add(conjecturalNode);
+                }
             }
 
             Call call = new Call();
@@ -248,4 +261,14 @@ Topology build(List<IApplicationComponentUIDAO.ApplicationComponent> application
         });
         return components;
     }
+
+    private void filterZeroSourceOrTargetReference(
+        List<IApplicationReferenceMetricUIDAO.ApplicationReferenceMetric> referenceMetric) {
+        for (int i = referenceMetric.size() - 1; i >= 0; i--) {
+            IApplicationReferenceMetricUIDAO.ApplicationReferenceMetric applicationReferenceMetric = referenceMetric.get(i);
+            if (applicationReferenceMetric.getSource() == 0 || applicationReferenceMetric.getTarget() == 0) {
+                referenceMetric.remove(i);
+            }
+        }
+    }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services