This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 3bde71c Fixed/918 (#919)
3bde71c is described below
commit 3bde71ceab6f748eb65a72a0fdc66b620f1e1c42
Author: 彭勇升 pengys <[email protected]>
AuthorDate: Fri Mar 9 15:19:55 2018 +0800
Fixed/918 (#919)
* Fixed #918
* 1. Fixed the remote serialize exception bug when there was a null value
in string array.
2. Fixed the topology null exception bug when source or target application
id is 0.
---
.../grpc/service/GRPCRemoteSerializeService.java | 8 ++-
.../storage/es/dao/ui/InstanceEsUIDAO.java | 3 +-
.../es/dao/ui/ServiceNameServiceEsUIDAO.java | 14 ++++--
.../apm/collector/ui/service/TopologyBuilder.java | 57 +++++++++++++++-------
4 files changed, 57 insertions(+), 25 deletions(-)
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 5fce0f7..ea7396e 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 @@ public class GRPCRemoteSerializeService implements
RemoteSerializeService<Remote
@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 d3d7eff..537846b 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 @@ public class InstanceEsUIDAO extends EsDAO implements
IInstanceUIDAO {
@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 @@ public class InstanceEsUIDAO extends EsDAO implements
IInstanceUIDAO {
}
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 341c2ea..da385aa 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 @@ package org.apache.skywalking.apm.collector.storage.es.dao.ui;
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 class ServiceNameServiceEsUIDAO extends EsDAO
implements IServiceNameServ
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 5e7f699..6ccf596 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 @@ class TopologyBuilder {
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 @@ class TopologyBuilder {
});
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 @@ class TopologyBuilder {
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 @@ class TopologyBuilder {
});
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);
+ }
+ }
+ }
}
--
To stop receiving notification emails like this one, please contact
[email protected].