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 c9a93acf117850af2a857b2735514a73585633e4..2f635667c2628266a1f3e3dfe2da992499c320f4 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 40a4c8277b8608738494d145b9ba1d3101187357..ffa7daeaaae43164fe14342a835a4862de18a1a1 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 63eaf400a2d8fd5e7d910c5926093ccd1aa051eb..567dc32e18e1281e73ed57ae935706c9d3292140 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 86ed033a6f976a87b666df10bc103f7249fda2b5..0416d325243be661142fba415717ddc926127016 160000 --- a/skywalking-ui +++ b/skywalking-ui @@ -1 +1 @@ -Subproject commit 86ed033a6f976a87b666df10bc103f7249fda2b5 +Subproject commit 0416d325243be661142fba415717ddc926127016