From 08d26eca09af37d0ca1fd49d9e820381655ea6b6 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Thu, 1 Mar 2018 17:57:01 +0800 Subject: [PATCH] Change the traceId type to be collection in trace graphql protocol. --- .../storage/ui/trace/BasicTrace.java | 27 +++++++++++++++---- .../es/dao/ui/SegmentDurationEsUIDAO.java | 2 +- .../h2/dao/ui/SegmentDurationH2UIDAO.java | 2 +- .../ui/service/SegmentTopService.java | 12 +++++++-- .../main/resources/ui-graphql/trace.graphqls | 2 +- 5 files changed, 35 insertions(+), 10 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/trace/BasicTrace.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/trace/BasicTrace.java index 127157bab..0d21d3ee3 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/trace/BasicTrace.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/trace/BasicTrace.java @@ -18,15 +18,32 @@ package org.apache.skywalking.apm.collector.storage.ui.trace; +import java.util.LinkedList; +import java.util.List; + /** * @author peng-yongsheng */ public class BasicTrace { + + private String segmentId; private String operationName; private int duration; private long start; private Boolean isError; - private String traceId; + private List traceIds; + + public String getSegmentId() { + return segmentId; + } + + public void setSegmentId(String segmentId) { + this.segmentId = segmentId; + } + + public BasicTrace() { + this.traceIds = new LinkedList<>(); + } public String getOperationName() { return operationName; @@ -60,11 +77,11 @@ public class BasicTrace { isError = error; } - public String getTraceId() { - return traceId; + public List getTraceIds() { + return traceIds; } - public void setTraceId(String traceId) { - this.traceId = traceId; + public void setTraceIds(List traceIds) { + this.traceIds = traceIds; } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java index 058b106a8..90046b2d3 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java @@ -91,7 +91,7 @@ public class SegmentDurationEsUIDAO extends EsDAO implements ISegmentDurationUID for (SearchHit searchHit : searchResponse.getHits().getHits()) { BasicTrace basicTrace = new BasicTrace(); - basicTrace.setTraceId((String)searchHit.getSource().get(SegmentDurationTable.COLUMN_TRACE_ID)); + basicTrace.setSegmentId((String)searchHit.getSource().get(SegmentDurationTable.COLUMN_SEGMENT_ID)); basicTrace.setStart(((Number)searchHit.getSource().get(SegmentDurationTable.COLUMN_START_TIME)).longValue()); basicTrace.setOperationName((String)searchHit.getSource().get(SegmentDurationTable.COLUMN_SERVICE_NAME)); basicTrace.setDuration(((Number)searchHit.getSource().get(SegmentDurationTable.COLUMN_DURATION)).intValue()); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/SegmentDurationH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/SegmentDurationH2UIDAO.java index 7699f0903..b47fd6617 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/SegmentDurationH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/SegmentDurationH2UIDAO.java @@ -101,9 +101,9 @@ public class SegmentDurationH2UIDAO extends H2DAO implements ISegmentDurationUID try (ResultSet rs = client.executeQuery(sql, p)) { while (rs.next()) { BasicTrace basicTrace = new BasicTrace(); + basicTrace.setSegmentId(rs.getString(SegmentDurationTable.COLUMN_SEGMENT_ID)); basicTrace.setDuration(rs.getInt(SegmentDurationTable.COLUMN_DURATION)); basicTrace.setStart(rs.getLong(SegmentDurationTable.COLUMN_START_TIME)); - basicTrace.setTraceId(rs.getString(SegmentDurationTable.COLUMN_TRACE_ID)); basicTrace.setOperationName(rs.getString(SegmentDurationTable.COLUMN_SERVICE_NAME)); basicTrace.setError(BooleanUtils.valueToBoolean(rs.getInt(SegmentDurationTable.COLUMN_IS_ERROR))); traceBrief.getTraces().add(basicTrace); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java index 750a8ee54..3b547b125 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java @@ -51,11 +51,19 @@ public class SegmentTopService { startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, traceId, applicationId, limit, from); + TraceBrief traceBrief; if (StringUtils.isNotEmpty(traceId)) { List segmentIds = globalTraceUIDAO.getSegmentIds(traceId); - return segmentDurationUIDAO.loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, applicationId, limit, from, segmentIds.toArray(new String[0])); + traceBrief = segmentDurationUIDAO.loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, applicationId, limit, from, segmentIds.toArray(new String[0])); } else { - return segmentDurationUIDAO.loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, applicationId, limit, from); + traceBrief = segmentDurationUIDAO.loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, applicationId, limit, from); } + + traceBrief.getTraces().forEach(trace -> { + List traceIds = globalTraceUIDAO.getGlobalTraceId(trace.getSegmentId()); + trace.getTraceIds().addAll(traceIds); + }); + + return traceBrief; } } 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 9188cfedb..808bc1a74 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 @@ -10,7 +10,7 @@ type BasicTrace { duration: Int! start: String! isError: Boolean - traceId: String + traceIds: [String!]! } # Represent the conditions used for query TraceBrief