From 48dacdb3f8219dbc3751f2c24e7a45c412490fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=98=89=E7=90=A6=20Lin=20Jiaqi?= Date: Fri, 22 Jun 2018 23:09:25 +0800 Subject: [PATCH] Support multiple service names in segment duration table (#1380) * support shardingjdbc database storage feature * dependency and version should be defined in collector root pom.xml * update the markdown file * fix errors * fix checkstyle errors * add the Logger modifier "static" in pr #1347 * fix the issue #1376 --- .../SegmentDurationShardingjdbcPersistenceDAO.java | 6 +++++- .../dao/ui/SegmentDurationShardingjdbcUIDAO.java | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/SegmentDurationShardingjdbcPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/SegmentDurationShardingjdbcPersistenceDAO.java index e7a89560c3..b8d3362304 100644 --- a/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/SegmentDurationShardingjdbcPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/SegmentDurationShardingjdbcPersistenceDAO.java @@ -19,6 +19,8 @@ package org.apache.skywalking.apm.collector.storage.shardingjdbc.dao; import java.util.*; + +import com.google.gson.Gson; import org.apache.skywalking.apm.collector.client.shardingjdbc.*; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.ISegmentDurationPersistenceDAO; @@ -34,6 +36,8 @@ public class SegmentDurationShardingjdbcPersistenceDAO extends ShardingjdbcDAO i private static final Logger logger = LoggerFactory.getLogger(SegmentDurationShardingjdbcPersistenceDAO.class); + private final Gson gson = new Gson(); + public SegmentDurationShardingjdbcPersistenceDAO(ShardingjdbcClient client) { super(client); } @@ -49,7 +53,7 @@ public class SegmentDurationShardingjdbcPersistenceDAO extends ShardingjdbcDAO i target.put(SegmentDurationTable.ID.getName(), data.getId()); target.put(SegmentDurationTable.SEGMENT_ID.getName(), data.getSegmentId()); target.put(SegmentDurationTable.APPLICATION_ID.getName(), data.getApplicationId()); - target.put(SegmentDurationTable.SERVICE_NAME.getName(), data.getServiceName()); + target.put(SegmentDurationTable.SERVICE_NAME.getName(), gson.toJson(data.getServiceName())); target.put(SegmentDurationTable.DURATION.getName(), data.getDuration()); target.put(SegmentDurationTable.START_TIME.getName(), data.getStartTime()); target.put(SegmentDurationTable.END_TIME.getName(), data.getEndTime()); diff --git a/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/ui/SegmentDurationShardingjdbcUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/ui/SegmentDurationShardingjdbcUIDAO.java index eac02da751..8277ff7140 100644 --- a/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/ui/SegmentDurationShardingjdbcUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-shardingjdbc-provider/src/main/java/org/apache/skywalking/apm/collector/storage/shardingjdbc/dao/ui/SegmentDurationShardingjdbcUIDAO.java @@ -24,8 +24,10 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import com.google.gson.Gson; import org.apache.skywalking.apm.collector.client.shardingjdbc.ShardingjdbcClient; import org.apache.skywalking.apm.collector.client.shardingjdbc.ShardingjdbcClientException; import org.apache.skywalking.apm.collector.core.util.BooleanUtils; @@ -48,6 +50,8 @@ public class SegmentDurationShardingjdbcUIDAO extends ShardingjdbcDAO implements private static final Logger logger = LoggerFactory.getLogger(SegmentDurationShardingjdbcUIDAO.class); + private final Gson gson = new Gson(); + public SegmentDurationShardingjdbcUIDAO(ShardingjdbcClient client) { super(client); } @@ -141,8 +145,11 @@ public class SegmentDurationShardingjdbcUIDAO extends ShardingjdbcDAO implements basicTrace.setSegmentId(rs.getString(SegmentDurationTable.SEGMENT_ID.getName())); basicTrace.setDuration(rs.getInt(SegmentDurationTable.DURATION.getName())); basicTrace.setStart(rs.getLong(SegmentDurationTable.START_TIME.getName())); - //TODO linjiaqi operation name was changed to contains multiple values - //basicTrace.setOperationName(rs.getString(SegmentDurationTable.SERVICE_NAME.getName())); + String serviceNameJsonStr = rs.getString(SegmentDurationTable.SERVICE_NAME.getName()); + if (StringUtils.isNotEmpty(serviceNameJsonStr)) { + List serviceNames = gson.fromJson(serviceNameJsonStr, LinkedList.class); + basicTrace.getOperationName().addAll(serviceNames); + } basicTrace.setError(BooleanUtils.valueToBoolean(rs.getInt(SegmentDurationTable.IS_ERROR.getName()))); traceBrief.getTraces().add(basicTrace); cnt++; -- GitLab