From 87c0f73e10d110de50e049318796a05529af1960 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Mon, 5 Mar 2018 20:27:59 +0800 Subject: [PATCH 1/3] Make the page number to be 1 when the value equal to 0. --- .../skywalking/apm/collector/ui/utils/PaginationUtils.java | 2 +- .../apm/collector/ui/utils/PaginationUtilsTestCase.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java index 9250b138a..3bf00a36a 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java @@ -28,7 +28,7 @@ public enum PaginationUtils { public Page exchange(Pagination paging) { int limit = paging.getPageSize(); - int from = paging.getPageSize() * (paging.getPageNum() - 1); + int from = paging.getPageSize() * ((paging.getPageNum() == 0 ? 1 : paging.getPageNum()) - 1); return new Page(from, limit); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java index 782d5ff1c..324e30f7f 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java @@ -37,6 +37,13 @@ public class PaginationUtilsTestCase { Assert.assertEquals(0, page.getFrom()); Assert.assertEquals(10, page.getLimit()); + pagination = new Pagination(); + pagination.setPageSize(10); + + page = PaginationUtils.INSTANCE.exchange(pagination); + Assert.assertEquals(0, page.getFrom()); + Assert.assertEquals(10, page.getLimit()); + pagination = new Pagination(); pagination.setPageSize(10); pagination.setPageNum(2); From 9906e68451a37ae6e29bb081ec04ae262400a155 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Mon, 5 Mar 2018 20:55:47 +0800 Subject: [PATCH 2/3] When entry span layer is MQ: 1. Use peer id in entry span to find the instance id and application id. 2. Make the instance id and application id to be the front instance id and front application id of the reference metric. 3. Do not create the application mapping metric. --- .../ApplicationMappingSpanListener.java | 23 +++++++++++-------- .../ServiceReferenceMetricSpanListener.java | 15 +++++++++--- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/mapping/ApplicationMappingSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/mapping/ApplicationMappingSpanListener.java index eda62f9fd..15de2c77c 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/mapping/ApplicationMappingSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/mapping/ApplicationMappingSpanListener.java @@ -34,6 +34,7 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; import org.apache.skywalking.apm.collector.storage.table.application.ApplicationMapping; +import org.apache.skywalking.apm.network.proto.SpanLayer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,18 +55,20 @@ public class ApplicationMappingSpanListener implements FirstSpanListener, EntryS @Override public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId) { logger.debug("application mapping listener parse reference"); - if (spanDecorator.getRefsCount() > 0) { - for (int i = 0; i < spanDecorator.getRefsCount(); i++) { - ApplicationMapping applicationMapping = new ApplicationMapping(); - applicationMapping.setApplicationId(applicationId); + if (!spanDecorator.getSpanLayer().equals(SpanLayer.MQ)) { + if (spanDecorator.getRefsCount() > 0) { + for (int i = 0; i < spanDecorator.getRefsCount(); i++) { + ApplicationMapping applicationMapping = new ApplicationMapping(); + applicationMapping.setApplicationId(applicationId); - int addressId = spanDecorator.getRefs(i).getNetworkAddressId(); - int mappingApplicationId = applicationCacheService.getApplicationIdByAddressId(addressId); - applicationMapping.setMappingApplicationId(mappingApplicationId); + int addressId = spanDecorator.getRefs(i).getNetworkAddressId(); + int mappingApplicationId = applicationCacheService.getApplicationIdByAddressId(addressId); + applicationMapping.setMappingApplicationId(mappingApplicationId); - String metricId = String.valueOf(applicationId) + Const.ID_SPLIT + String.valueOf(applicationMapping.getMappingApplicationId()); - applicationMapping.setMetricId(metricId); - applicationMappings.add(applicationMapping); + String metricId = String.valueOf(applicationId) + Const.ID_SPLIT + String.valueOf(applicationMapping.getMappingApplicationId()); + applicationMapping.setMetricId(metricId); + applicationMappings.add(applicationMapping); + } } } } diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/refmetric/ServiceReferenceMetricSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/refmetric/ServiceReferenceMetricSpanListener.java index 8c7d04333..91f502ba7 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/refmetric/ServiceReferenceMetricSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/refmetric/ServiceReferenceMetricSpanListener.java @@ -20,7 +20,6 @@ package org.apache.skywalking.apm.collector.analysis.metric.provider.worker.serv import java.util.LinkedList; import java.util.List; -import org.apache.skywalking.apm.collector.storage.table.MetricSource; import org.apache.skywalking.apm.collector.analysis.metric.define.graph.MetricGraphIdDefine; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; @@ -38,6 +37,7 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.ObjectUtils; import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; +import org.apache.skywalking.apm.collector.storage.table.MetricSource; import org.apache.skywalking.apm.collector.storage.table.service.ServiceReferenceMetric; import org.apache.skywalking.apm.network.proto.SpanLayer; import org.slf4j.Logger; @@ -78,8 +78,17 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En ReferenceDecorator reference = spanDecorator.getRefs(i); ServiceReferenceMetric serviceReferenceMetric = new ServiceReferenceMetric(); serviceReferenceMetric.setFrontServiceId(reference.getParentServiceId()); - serviceReferenceMetric.setFrontInstanceId(reference.getParentApplicationInstanceId()); - serviceReferenceMetric.setFrontApplicationId(instanceCacheService.getApplicationId(reference.getParentApplicationInstanceId())); + + if (spanDecorator.getSpanLayer().equals(SpanLayer.MQ)) { + int peerId = spanDecorator.getPeerId(); + int applicationIdByPeerId = applicationCacheService.getApplicationIdByAddressId(peerId); + int instanceIdByPeerId = instanceCacheService.getInstanceIdByAddressId(applicationIdByPeerId, peerId); + serviceReferenceMetric.setFrontInstanceId(instanceIdByPeerId); + serviceReferenceMetric.setFrontApplicationId(applicationIdByPeerId); + } else { + serviceReferenceMetric.setFrontInstanceId(reference.getParentApplicationInstanceId()); + serviceReferenceMetric.setFrontApplicationId(instanceCacheService.getApplicationId(reference.getParentApplicationInstanceId())); + } serviceReferenceMetric.setBehindServiceId(spanDecorator.getOperationNameId()); serviceReferenceMetric.setBehindInstanceId(instanceId); serviceReferenceMetric.setBehindApplicationId(applicationId); From 24468b1eea2b05d319092e3e20a4fdc9a8351799 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Mon, 5 Mar 2018 21:00:24 +0800 Subject: [PATCH 3/3] Add the segmentId into BasicTrace which belongs to trace query graphql protocol. --- .../apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls | 1 + 1 file changed, 1 insertion(+) diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls index 808bc1a74..659297c0f 100644 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls +++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls @@ -6,6 +6,7 @@ type TraceBrief { # Trace basic info type BasicTrace { + segmentId: String! operationName: String! duration: Int! start: String!