diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java index c9a93acf1..2f635667c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java @@ -38,7 +38,10 @@ import org.apache.skywalking.oap.server.core.storage.annotation.Column; @Stream(name = ServiceTraffic.INDEX_NAME, scopeId = DefaultScopeDefine.SERVICE, builder = ServiceTraffic.Builder.class, processor = MetricsStreamProcessor.class) @MetricsExtension(supportDownSampling = false, supportUpdate = false) -@EqualsAndHashCode +@EqualsAndHashCode(of = { + "name", + "nodeType" +}) public class ServiceTraffic extends Metrics { public static final String INDEX_NAME = "service_traffic"; @@ -69,6 +72,8 @@ public class ServiceTraffic extends Metrics { public void deserialize(final RemoteData remoteData) { setName(remoteData.getDataStrings(0)); setNodeType(NodeType.valueOf(remoteData.getDataIntegers(0))); + // Time bucket is not a part of persistent, but still is required in the first time insert. + setTimeBucket(remoteData.getDataLongs(0)); } @Override @@ -76,6 +81,8 @@ public class ServiceTraffic extends Metrics { final RemoteData.Builder builder = RemoteData.newBuilder(); builder.addDataStrings(name); builder.addDataIntegers(nodeType.value()); + // Time bucket is not a part of persistent, but still is required in the first time insert. + builder.addDataLongs(getTimeBucket()); return builder; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java index 40a4c8277..ffa7daeaa 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AggregationQueryService.java @@ -68,10 +68,33 @@ public class AggregationQueryService implements Service { selectedRecord.setName(IDManager.ServiceID.analysisId(selectedRecord.getId()).getName()); break; case ServiceInstance: - selectedRecord.setName(IDManager.ServiceInstanceID.analysisId(selectedRecord.getId()).getName()); + final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition + = IDManager.ServiceInstanceID.analysisId(selectedRecord.getId()); + /** + * Add the service name into the name if this is global top N. + */ + if (StringUtil.isEmpty(condition.getParentService())) { + IDManager.ServiceID.ServiceIDDefinition serviceIDDefinition = + IDManager.ServiceID.analysisId(instanceIDDefinition.getServiceId()); + selectedRecord.setName(serviceIDDefinition.getName() + " - " + instanceIDDefinition.getName()); + } else { + selectedRecord.setName(instanceIDDefinition.getName()); + } break; case Endpoint: - selectedRecord.setName(IDManager.EndpointID.analysisId(selectedRecord.getId()).getEndpointName()); + final IDManager.EndpointID.EndpointIDDefinition endpointIDDefinition + = IDManager.EndpointID.analysisId(selectedRecord.getId()); + /** + * Add the service name into the name if this is global top N. + */ + if (StringUtil.isEmpty(condition.getParentService())) { + IDManager.ServiceID.ServiceIDDefinition serviceIDDefinition = + IDManager.ServiceID.analysisId(endpointIDDefinition.getServiceId()); + selectedRecord.setName(serviceIDDefinition.getName() + + " - " + endpointIDDefinition.getEndpointName()); + } else { + selectedRecord.setName(endpointIDDefinition.getEndpointName()); + } break; default: selectedRecord.setName(Const.UNKNOWN); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/MultiScopesAnalysisListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/MultiScopesAnalysisListener.java index 63eaf400a..567dc32e1 100755 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/MultiScopesAnalysisListener.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/MultiScopesAnalysisListener.java @@ -276,7 +276,6 @@ public class MultiScopesAnalysisListener implements EntryAnalysisListener, ExitA }); exitSourceBuilders.forEach(exitSourceBuilder -> { - sourceReceiver.receive(exitSourceBuilder.toService()); sourceReceiver.receive(exitSourceBuilder.toServiceRelation()); /* diff --git a/skywalking-ui b/skywalking-ui index 86ed033a6..0416d3252 160000 --- a/skywalking-ui +++ b/skywalking-ui @@ -1 +1 @@ -Subproject commit 86ed033a6f976a87b666df10bc103f7249fda2b5 +Subproject commit 0416d325243be661142fba415717ddc926127016