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 e7a89560c34e947754d7ebc2e878102ac1fb4713..b8d33623044a94289c4153855da2ebb80866b699 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 eac02da75147cff56ce4ba964e4f58fdfcd4633f..8277ff71401fd5db9414e5da21f384279e6c04e3 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++;