From 230392890a7b2a8442fa59d42cf82d3d5c0f4690 Mon Sep 17 00:00:00 2001 From: emeroad Date: Tue, 2 Aug 2016 16:05:31 +0900 Subject: [PATCH] #1819 trace format v2 - refactoring - remove duplicated class : com.navercorp.pinpoint.web.vo.TransactionId --- .../dao/hbase/HbaseAgentEventDao.java | 2 +- .../dao/hbase/HbaseAgentInfoDao.java | 2 +- .../dao/hbase/HbaseAgentStatDao.java | 2 +- .../common/server/bo/ApiMetaDataBo.java | 2 +- .../common/server/bo/SqlMetaDataBo.java | 2 +- .../common/server/bo/StringMetaDataBo.java | 2 +- .../common/server}/util/RowKeyUtils.java | 5 +- .../common/server/util/SpanUtils.java | 1 - .../pinpoint/common/util/SpanUtils.java | 101 ------------ .../pinpoint/common/util/TransactionId.java | 6 +- .../common/util/TransactionIdComparator.java | 34 ++++ .../common/util/TransactionIdUtils.java | 18 ++- .../pinpoint/common/util/SpanUtilsTest.java | 86 ---------- .../common/util}/TransactionIdTest.java | 31 ++-- .../common/util/TransactionIdUtilsTest.java | 2 - .../pinpoint/profiler/context/Span.java | 4 +- .../BusinessTransactionController.java | 6 +- .../web/controller/FilteredMapController.java | 2 +- .../controller/ScatterChartController.java | 13 +- .../web/dao/ApplicationTraceIndexDao.java | 2 +- .../navercorp/pinpoint/web/dao/TraceDao.java | 2 +- .../web/dao/hbase/HbaseAgentEventDao.java | 2 +- .../web/dao/hbase/HbaseAgentInfoDao.java | 2 +- .../web/dao/hbase/HbaseAgentLifeCycleDao.java | 2 +- .../web/dao/hbase/HbaseAgentStatDao.java | 2 +- .../hbase/HbaseApplicationTraceIndexDao.java | 2 +- .../web/dao/hbase/HbaseDualReadDao.java | 2 +- .../dao/hbase/HbaseTraceCompatibilityDao.java | 2 +- .../pinpoint/web/dao/hbase/HbaseTraceDao.java | 23 ++- .../web/dao/hbase/HbaseTraceDaoV2.java | 15 +- .../web/mapper/TraceIndexScatterMapper.java | 2 +- .../web/mapper/TraceIndexScatterMapper2.java | 2 +- .../web/mapper/TraceIndexScatterMapper3.java | 2 +- .../web/mapper/TransactionIdMapper.java | 2 +- .../pinpoint/web/service/DotExtractor.java | 3 +- .../web/service/FilteredMapService.java | 2 +- .../web/service/FilteredMapServiceImpl.java | 2 +- .../web/service/ScatterChartService.java | 2 +- .../web/service/ScatterChartServiceImpl.java | 2 +- .../pinpoint/web/service/SpanService.java | 2 +- .../pinpoint/web/service/SpanServiceImpl.java | 2 +- .../web/service/TransactionInfoService.java | 2 +- .../service/TransactionInfoServiceImpl.java | 2 +- .../web/view/TransactionInfoViewModel.java | 13 +- .../pinpoint/web/vo/TransactionId.java | 151 ------------------ .../web/vo/TransactionMetadataQuery.java | 4 +- .../pinpoint/web/vo/scatter/Dot.java | 6 +- .../web/mapper/AgentStatMapperTest.java | 2 +- .../pinpoint/web/scatter/ScatterDataTest.java | 2 +- .../pinpoint/web/view/DotSerializerTest.java | 5 +- 50 files changed, 160 insertions(+), 427 deletions(-) rename {commons/src/main/java/com/navercorp/pinpoint/common => commons-server/src/main/java/com/navercorp/pinpoint/common/server}/util/RowKeyUtils.java (93%) delete mode 100644 commons/src/main/java/com/navercorp/pinpoint/common/util/SpanUtils.java create mode 100644 commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdComparator.java delete mode 100644 commons/src/test/java/com/navercorp/pinpoint/common/util/SpanUtilsTest.java rename {web/src/test/java/com/navercorp/pinpoint/web/vo => commons/src/test/java/com/navercorp/pinpoint/common/util}/TransactionIdTest.java (75%) delete mode 100644 web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionId.java diff --git a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentEventDao.java b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentEventDao.java index bf034378c..ea22cb63f 100644 --- a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentEventDao.java +++ b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentEventDao.java @@ -29,7 +29,7 @@ import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.server.util.AgentEventType; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; /** diff --git a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentInfoDao.java b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentInfoDao.java index a03081a92..d166a4970 100644 --- a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentInfoDao.java +++ b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentInfoDao.java @@ -23,7 +23,7 @@ import com.navercorp.pinpoint.common.server.bo.JvmInfoBo; import com.navercorp.pinpoint.common.server.bo.ServerMetaDataBo; import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.thrift.dto.TAgentInfo; import com.navercorp.pinpoint.thrift.dto.TJvmInfo; diff --git a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentStatDao.java b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentStatDao.java index a61f13018..fe81d40c8 100644 --- a/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentStatDao.java +++ b/collector/src/main/java/com/navercorp/pinpoint/collector/dao/hbase/HbaseAgentStatDao.java @@ -30,7 +30,7 @@ import org.springframework.stereotype.Repository; import com.navercorp.pinpoint.collector.dao.AgentStatDao; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.thrift.dto.TAgentStat; import com.navercorp.pinpoint.thrift.dto.TCpuLoad; diff --git a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/ApiMetaDataBo.java b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/ApiMetaDataBo.java index 9d1466719..4ba55825c 100644 --- a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/ApiMetaDataBo.java +++ b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/ApiMetaDataBo.java @@ -18,7 +18,7 @@ package com.navercorp.pinpoint.common.server.bo; import com.navercorp.pinpoint.common.PinpointConstants; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; /** diff --git a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/SqlMetaDataBo.java b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/SqlMetaDataBo.java index 94d46b12f..ae149acff 100644 --- a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/SqlMetaDataBo.java +++ b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/SqlMetaDataBo.java @@ -18,7 +18,7 @@ package com.navercorp.pinpoint.common.server.bo; import com.navercorp.pinpoint.common.PinpointConstants; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; /** diff --git a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/StringMetaDataBo.java b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/StringMetaDataBo.java index cf0fbadb0..c30936605 100644 --- a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/StringMetaDataBo.java +++ b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/bo/StringMetaDataBo.java @@ -18,7 +18,7 @@ package com.navercorp.pinpoint.common.server.bo; import com.navercorp.pinpoint.common.PinpointConstants; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; /** diff --git a/commons/src/main/java/com/navercorp/pinpoint/common/util/RowKeyUtils.java b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/RowKeyUtils.java similarity index 93% rename from commons/src/main/java/com/navercorp/pinpoint/common/util/RowKeyUtils.java rename to commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/RowKeyUtils.java index 79e0d64e7..e11fba7fa 100644 --- a/commons/src/main/java/com/navercorp/pinpoint/common/util/RowKeyUtils.java +++ b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/RowKeyUtils.java @@ -14,7 +14,10 @@ * limitations under the License. */ -package com.navercorp.pinpoint.common.util; +package com.navercorp.pinpoint.common.server.util; + +import com.navercorp.pinpoint.common.util.BytesUtils; +import com.navercorp.pinpoint.common.util.TimeUtils; import static com.navercorp.pinpoint.common.PinpointConstants.AGENT_NAME_MAX_LEN; import static com.navercorp.pinpoint.common.util.BytesUtils.INT_BYTE_LENGTH; diff --git a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/SpanUtils.java b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/SpanUtils.java index 699244433..ac9b037c5 100644 --- a/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/SpanUtils.java +++ b/commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/SpanUtils.java @@ -23,7 +23,6 @@ import com.navercorp.pinpoint.common.buffer.Buffer; import com.navercorp.pinpoint.common.server.bo.SpanBo; import com.navercorp.pinpoint.common.server.bo.SpanChunkBo; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.common.util.TransactionIdUtils; diff --git a/commons/src/main/java/com/navercorp/pinpoint/common/util/SpanUtils.java b/commons/src/main/java/com/navercorp/pinpoint/common/util/SpanUtils.java deleted file mode 100644 index b27dfa44c..000000000 --- a/commons/src/main/java/com/navercorp/pinpoint/common/util/SpanUtils.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2014 NAVER Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.navercorp.pinpoint.common.util; - -import static com.navercorp.pinpoint.common.PinpointConstants.*; - -import com.navercorp.pinpoint.common.buffer.AutomaticBuffer; -import com.navercorp.pinpoint.common.buffer.Buffer; -import com.navercorp.pinpoint.thrift.dto.TSpan; -import com.navercorp.pinpoint.thrift.dto.TSpanChunk; - -/** - * @author emeroad - */ -public final class SpanUtils { - private SpanUtils() { - } - - @Deprecated - public static byte[] getAgentIdTraceIndexRowKey(String agentId, long timestamp) { - if (agentId == null) { - throw new IllegalArgumentException("agentId must not null"); - } - final byte[] bAgentId = BytesUtils.toBytes(agentId); - return RowKeyUtils.concatFixedByteAndLong(bAgentId, AGENT_NAME_MAX_LEN, TimeUtils.reverseTimeMillis(timestamp)); - } - - public static byte[] getApplicationTraceIndexRowKey(String applicationName, long timestamp) { - if (applicationName == null) { - throw new IllegalArgumentException("agentId must not null"); - } - final byte[] bApplicationName = BytesUtils.toBytes(applicationName); - return RowKeyUtils.concatFixedByteAndLong(bApplicationName, AGENT_NAME_MAX_LEN, TimeUtils.reverseTimeMillis(timestamp)); - } - - public static byte[] getTraceIndexRowKey(byte[] agentId, long timestamp) { - if (agentId == null) { - throw new NullPointerException("agentId must not be null"); - } - return RowKeyUtils.concatFixedByteAndLong(agentId, AGENT_NAME_MAX_LEN, TimeUtils.reverseTimeMillis(timestamp)); - } - - public static byte[] getVarTransactionId(TSpan span) { - if (span == null) { - throw new NullPointerException("span must not be null"); - } - final byte[] transactionIdBytes = span.getTransactionId(); - TransactionId transactionId = TransactionIdUtils.parseTransactionId(transactionIdBytes); - String agentId = transactionId.getAgentId(); - if (agentId == null) { - agentId = span.getAgentId(); - } - - final Buffer buffer= new AutomaticBuffer(32); - buffer.putPrefixedString(agentId); - buffer.putSVLong(transactionId.getAgentStartTime()); - buffer.putVLong(transactionId.getTransactionSequence()); - return buffer.getBuffer(); - } - - public static byte[] getTransactionId(TSpan span) { - if (span == null) { - throw new NullPointerException("span must not be null"); - } - final byte[] transactionIdBytes = span.getTransactionId(); - TransactionId transactionId = TransactionIdUtils.parseTransactionId(transactionIdBytes); - String agentId = transactionId.getAgentId(); - if (agentId == null) { - agentId = span.getAgentId(); - } - return BytesUtils.stringLongLongToBytes(agentId, AGENT_NAME_MAX_LEN, transactionId.getAgentStartTime(), transactionId.getTransactionSequence()); - - } - - public static byte[] getTransactionId(TSpanChunk spanChunk) { - if (spanChunk == null) { - throw new NullPointerException("spanChunk must not be null"); - } - final byte[] transactionIdBytes = spanChunk.getTransactionId(); - final TransactionId transactionId = TransactionIdUtils.parseTransactionId(transactionIdBytes); - String agentId = transactionId.getAgentId(); - if (agentId == null) { - agentId = spanChunk.getAgentId(); - } - return BytesUtils.stringLongLongToBytes(agentId, AGENT_NAME_MAX_LEN, transactionId.getAgentStartTime(), transactionId.getTransactionSequence()); - } -} diff --git a/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionId.java b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionId.java index ff6121a2b..f4acbbc96 100644 --- a/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionId.java +++ b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionId.java @@ -21,9 +21,9 @@ package com.navercorp.pinpoint.common.util; */ public class TransactionId { - protected String agentId; - protected long agentStartTime; - protected long transactionSequence; + private String agentId; + private long agentStartTime; + private long transactionSequence; public TransactionId(String agentId, long agentStartTime, long transactionSequence) { if (agentId == null) { diff --git a/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdComparator.java b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdComparator.java new file mode 100644 index 000000000..5b6c6ae17 --- /dev/null +++ b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdComparator.java @@ -0,0 +1,34 @@ +package com.navercorp.pinpoint.common.util; + +import java.util.Comparator; + +/** + * @author Woonduk Kang(emeroad) + */ +public class TransactionIdComparator implements Comparator { + + public static final TransactionIdComparator INSTANCE = new TransactionIdComparator(); + + @Override + public int compare(TransactionId o1, TransactionId o2) { + int r1 = o1.getAgentId().compareTo(o2.getAgentId()); + if (r1 == 0) { + if (o1.getAgentStartTime() > o2.getAgentStartTime()) { + return 1; + } else if (o1.getAgentStartTime() < o2.getAgentStartTime()) { + return -1; + } else { + if (o1.getTransactionSequence() > o2.getTransactionSequence()) { + return 1; + } else if (o1.getTransactionSequence() < o2.getTransactionSequence()) { + return -1; + } else { + return 0; + } + } + } else { + return r1; + } + } + +} diff --git a/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdUtils.java b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdUtils.java index 8b9fb9074..e9234f7de 100644 --- a/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdUtils.java +++ b/commons/src/main/java/com/navercorp/pinpoint/common/util/TransactionIdUtils.java @@ -20,6 +20,8 @@ import com.navercorp.pinpoint.common.buffer.AutomaticBuffer; import com.navercorp.pinpoint.common.buffer.Buffer; import com.navercorp.pinpoint.common.buffer.FixedBuffer; +import java.nio.ByteBuffer; + /** * @author emeroad */ @@ -31,6 +33,10 @@ public final class TransactionIdUtils { private TransactionIdUtils() { } + public static String formatString(TransactionId transactionId) { + return formatString(transactionId.getAgentId(), transactionId.getAgentStartTime(), transactionId.getTransactionSequence()); + } + public static String formatString(String agentId, long agentStartTime, long transactionSequence) { if (agentId == null) { throw new NullPointerException("agentId must not be null"); @@ -45,6 +51,16 @@ public final class TransactionIdUtils { } public static byte[] formatBytes(String agentId, long agentStartTime, long transactionSequence) { + final Buffer buffer = writeTransactionId(agentId, agentStartTime, transactionSequence); + return buffer.getBuffer(); + } + + public static ByteBuffer formatByteBuffer(String agentId, long agentStartTime, long transactionSequence) { + final Buffer buffer = writeTransactionId(agentId, agentStartTime, transactionSequence); + return buffer.wrapByteBuffer(); + } + + private static Buffer writeTransactionId(String agentId, long agentStartTime, long transactionSequence) { // agentId may be null // version + prefixed size + string + long + long final Buffer buffer = new AutomaticBuffer(1 + 5 + 24 + 10 + 10); @@ -52,7 +68,7 @@ public final class TransactionIdUtils { buffer.putPrefixedString(agentId); buffer.putVLong(agentStartTime); buffer.putVLong(transactionSequence); - return buffer.getBuffer(); + return buffer; } public static TransactionId parseTransactionId(final byte[] transactionId) { diff --git a/commons/src/test/java/com/navercorp/pinpoint/common/util/SpanUtilsTest.java b/commons/src/test/java/com/navercorp/pinpoint/common/util/SpanUtilsTest.java deleted file mode 100644 index 9ff1721fa..000000000 --- a/commons/src/test/java/com/navercorp/pinpoint/common/util/SpanUtilsTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2014 NAVER Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.navercorp.pinpoint.common.util; - -import java.util.Arrays; - -import com.google.common.primitives.Longs; -import com.navercorp.pinpoint.common.PinpointConstants; -import com.navercorp.pinpoint.thrift.dto.TSpan; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author emeroad - */ -public class SpanUtilsTest { - @Test - public void testGetTraceIndexRowKeyWhiteSpace() throws Exception { - String agentId = "test test"; - long time = System.currentTimeMillis(); - check(agentId, time); - } - - @Test - public void testGetTraceIndexRowKey1() throws Exception { - String agentId = "test"; - long time = System.currentTimeMillis(); - check(agentId, time); - } - - @Test - public void testGetTraceIndexRowKey2() throws Exception { - String agentId = ""; - for (int i = 0; i < PinpointConstants.AGENT_NAME_MAX_LEN; i++) { - agentId += "1"; - } - - long time = System.currentTimeMillis(); - check(agentId, time); - } - - @Test - public void testGetTraceIndexRowKey3() throws Exception { - String agentId = ""; - for (int i = 0; i < PinpointConstants.AGENT_NAME_MAX_LEN + 1; i++) { - agentId += "1"; - } - - long time = System.currentTimeMillis(); - try { - check(agentId, time); - Assert.fail("error"); - } catch (IndexOutOfBoundsException ignore) { - } - } - - private void check(String agentId0, long l1) { - TSpan span = new TSpan(); - span.setAgentId(agentId0); - span.setStartTime(l1); - - byte[] traceIndexRowKey = SpanUtils.getAgentIdTraceIndexRowKey(span.getAgentId(), span.getStartTime()); - - String agentId = BytesUtils.toString(traceIndexRowKey, 0, PinpointConstants.AGENT_NAME_MAX_LEN).trim(); - Assert.assertEquals(agentId0, agentId); - - long time = Longs.fromByteArray(Arrays.copyOfRange(traceIndexRowKey, PinpointConstants.AGENT_NAME_MAX_LEN, PinpointConstants.AGENT_NAME_MAX_LEN + 8)); - time = TimeUtils.recoveryTimeMillis(time); - Assert.assertEquals(time, l1); - } -} diff --git a/web/src/test/java/com/navercorp/pinpoint/web/vo/TransactionIdTest.java b/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdTest.java similarity index 75% rename from web/src/test/java/com/navercorp/pinpoint/web/vo/TransactionIdTest.java rename to commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdTest.java index a4d449ed6..e31b37878 100644 --- a/web/src/test/java/com/navercorp/pinpoint/web/vo/TransactionIdTest.java +++ b/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdTest.java @@ -14,13 +14,12 @@ * limitations under the License. */ -package com.navercorp.pinpoint.web.vo; +package com.navercorp.pinpoint.common.util; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; import org.junit.Assert; @@ -28,44 +27,45 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.navercorp.pinpoint.web.vo.TransactionId; - public class TransactionIdTest { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private final Comparator comparator = TransactionIdComparator.INSTANCE; + @Test public void sameAll() { TransactionId id1 = new TransactionId("A1", 1, 1); TransactionId id2 = new TransactionId("A1", 1, 1); - Assert.assertEquals(0, id1.compareTo(id2)); + Assert.assertEquals(0, comparator.compare(id1, id2)); } @Test public void diffAgentStartTimeAsc() { TransactionId id1 = new TransactionId("A1", 1, 1); TransactionId id2 = new TransactionId("A1", 2, 1); - Assert.assertEquals(-1, id1.compareTo(id2)); + Assert.assertEquals(-1, comparator.compare(id1, id2)); } @Test public void diffAgentStartTimeDesc() { TransactionId id1 = new TransactionId("A1", 2, 1); TransactionId id2 = new TransactionId("A1", 1, 1); - Assert.assertEquals(1, id1.compareTo(id2)); + + Assert.assertEquals(1, comparator.compare(id1, id2)); } @Test public void diffSeqAsc() { TransactionId id1 = new TransactionId("A1", 1, 1); TransactionId id2 = new TransactionId("A1", 1, 2); - Assert.assertEquals(-1, id1.compareTo(id2)); + Assert.assertEquals(-1, comparator.compare(id1, id2)); } @Test public void diffSeqDesc() { TransactionId id1 = new TransactionId("A1", 1, 2); TransactionId id2 = new TransactionId("A1", 1, 1); - Assert.assertEquals(1, id1.compareTo(id2)); + Assert.assertEquals(1, comparator.compare(id1, id2)); } @Test @@ -82,11 +82,12 @@ public class TransactionIdTest { } logger.debug("{}", list); - SortedSet set = new TreeSet(list); - for (int i = 0; i < 10; i++) { - set.add(list.get(i)); + Collections.sort(list, comparator); + int i = 0; + for (TransactionId transactionId : list) { + Assert.assertEquals(i, transactionId.getTransactionSequence()); + i++; } - - logger.debug("{}", set); + logger.debug("{}", list); } } diff --git a/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdUtilsTest.java b/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdUtilsTest.java index 11fafcc8c..fb58ff9c7 100644 --- a/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdUtilsTest.java +++ b/commons/src/test/java/com/navercorp/pinpoint/common/util/TransactionIdUtilsTest.java @@ -20,8 +20,6 @@ import org.junit.Assert; import org.junit.Test; -import com.navercorp.pinpoint.common.util.TransactionId; -import com.navercorp.pinpoint.common.util.TransactionIdUtils; /** * @author emeroad diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/Span.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/Span.java index 8fbf0a957..11e863a52 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/Span.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/Span.java @@ -47,9 +47,9 @@ public class Span extends TSpan implements FrameAttachment { final String transactionAgentId = traceId.getAgentId(); if (!agentId.equals(transactionAgentId)) { - this.setTransactionId(TransactionIdUtils.formatBytes(transactionAgentId, traceId.getAgentStartTime(), traceId.getTransactionSequence())); + this.setTransactionId(TransactionIdUtils.formatByteBuffer(transactionAgentId, traceId.getAgentStartTime(), traceId.getTransactionSequence())); } else { - this.setTransactionId(TransactionIdUtils.formatBytes(null, traceId.getAgentStartTime(), traceId.getTransactionSequence())); + this.setTransactionId(TransactionIdUtils.formatByteBuffer(null, traceId.getAgentStartTime(), traceId.getTransactionSequence())); } this.setSpanId(traceId.getSpanId()); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/BusinessTransactionController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/BusinessTransactionController.java index 1c88c622f..4989b2680 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/BusinessTransactionController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/BusinessTransactionController.java @@ -24,6 +24,8 @@ import javax.servlet.http.HttpServletResponse; import com.navercorp.pinpoint.common.util.DefaultSqlParser; import com.navercorp.pinpoint.common.util.OutputParameterParser; import com.navercorp.pinpoint.common.util.SqlParser; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdUtils; import com.navercorp.pinpoint.web.view.TransactionInfoViewModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +45,6 @@ import com.navercorp.pinpoint.web.service.FilteredMapService; import com.navercorp.pinpoint.web.service.SpanResult; import com.navercorp.pinpoint.web.service.SpanService; import com.navercorp.pinpoint.web.service.TransactionInfoService; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.callstacks.RecordSet; /** @@ -96,7 +97,8 @@ public class BusinessTransactionController { @RequestParam(value = "v", required = false, defaultValue = "0") int viewVersion, HttpServletResponse response) { logger.debug("traceId:{}", traceIdParam); - final TransactionId traceId = new TransactionId(traceIdParam); + + final TransactionId traceId = TransactionIdUtils.parseTransactionId(traceIdParam); // select spans final SpanResult spanResult = this.spanService.selectSpan(traceId, focusTimestamp); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/FilteredMapController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/FilteredMapController.java index e0574c9b5..326aed9c1 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/FilteredMapController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/FilteredMapController.java @@ -18,6 +18,7 @@ package com.navercorp.pinpoint.web.controller; import com.navercorp.pinpoint.common.service.ServiceTypeRegistryService; import com.navercorp.pinpoint.common.util.DateUtils; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.applicationmap.ApplicationMap; import com.navercorp.pinpoint.web.applicationmap.FilterMapWrap; import com.navercorp.pinpoint.web.filter.Filter; @@ -27,7 +28,6 @@ import com.navercorp.pinpoint.web.util.LimitUtils; import com.navercorp.pinpoint.web.util.TimeUtils; import com.navercorp.pinpoint.web.vo.LimitedScanResult; import com.navercorp.pinpoint.web.vo.Range; -import com.navercorp.pinpoint.web.vo.TransactionId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/ScatterChartController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/ScatterChartController.java index 33f0ad756..09a757f6a 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/ScatterChartController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/ScatterChartController.java @@ -18,6 +18,8 @@ package com.navercorp.pinpoint.web.controller; import com.navercorp.pinpoint.common.server.bo.SpanBo; import com.navercorp.pinpoint.common.util.DateUtils; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdComparator; import com.navercorp.pinpoint.web.filter.Filter; import com.navercorp.pinpoint.web.filter.FilterBuilder; import com.navercorp.pinpoint.web.scatter.ScatterData; @@ -28,7 +30,6 @@ import com.navercorp.pinpoint.web.view.ServerTime; import com.navercorp.pinpoint.web.view.TransactionMetaDataViewModel; import com.navercorp.pinpoint.web.vo.LimitedScanResult; import com.navercorp.pinpoint.web.vo.Range; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.TransactionMetadataQuery; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -45,9 +46,8 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.Collections; import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; /** * @author netspider @@ -205,15 +205,12 @@ public class ScatterChartController { boolean requestComplete = traceIdList.size() < limit; - // TODO just need sorted? we need range check with tree-based structure. - SortedSet traceIdSet = new TreeSet<>(traceIdList); - logger.debug("unified traceIdSet size={}", traceIdSet.size()); - + Collections.sort(traceIdList, TransactionIdComparator.INSTANCE); Filter filter = filterBuilder.build(filterText); ModelAndView mv; if (version == 1) { - ScatterData scatterData = scatter.selectScatterData(traceIdSet, applicationName, range, xGroupUnit, yGroupUnit, filter); + ScatterData scatterData = scatter.selectScatterData(traceIdList, applicationName, range, xGroupUnit, yGroupUnit, filter); if (logger.isDebugEnabled()) { logger.debug("getScatterData range scan(limited:{}, backwardDirection:{}) from ~ to:{} ~ {}, limited:{}, filterDataSize:{}", limit, backwardDirection, DateUtils.longToDateStr(range.getFrom()), DateUtils.longToDateStr(range.getTo()), DateUtils.longToDateStr(limitedScanResult.getLimitedTime()), traceIdList.size()); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/ApplicationTraceIndexDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/ApplicationTraceIndexDao.java index 9240ad73d..40b644b3f 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/ApplicationTraceIndexDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/ApplicationTraceIndexDao.java @@ -16,11 +16,11 @@ package com.navercorp.pinpoint.web.dao; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.scatter.ScatterData; import com.navercorp.pinpoint.web.vo.LimitedScanResult; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; import java.util.List; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/TraceDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/TraceDao.java index c0cfe1214..3a24e1840 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/TraceDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/TraceDao.java @@ -21,7 +21,7 @@ import java.util.Collection; import java.util.List; import com.navercorp.pinpoint.common.server.bo.SpanBo; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; /** * @author emeroad diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentEventDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentEventDao.java index 82393d201..e44c06082 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentEventDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentEventDao.java @@ -42,7 +42,7 @@ import com.navercorp.pinpoint.common.hbase.ResultsExtractor; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.server.util.AgentEventType; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.web.dao.AgentEventDao; import com.navercorp.pinpoint.web.vo.Range; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java index f302f0b27..22d93ceaf 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentInfoDao.java @@ -19,7 +19,7 @@ package com.navercorp.pinpoint.web.dao.hbase; import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.hbase.ResultsExtractor; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.web.dao.AgentInfoDao; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentLifeCycleDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentLifeCycleDao.java index e91acde9f..b3865edf2 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentLifeCycleDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentLifeCycleDao.java @@ -37,7 +37,7 @@ import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.hbase.ResultsExtractor; import com.navercorp.pinpoint.common.hbase.RowMapper; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.web.dao.AgentLifeCycleDao; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentStatDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentStatDao.java index 314099c5d..3f2a99b88 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentStatDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseAgentStatDao.java @@ -36,7 +36,7 @@ import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.hbase.ResultsExtractor; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.web.dao.AgentStatDao; import com.navercorp.pinpoint.web.util.AgentStats; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java index 011fdf2ed..4b664e177 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseApplicationTraceIndexDao.java @@ -27,6 +27,7 @@ import com.navercorp.pinpoint.common.util.BytesUtils; import com.navercorp.pinpoint.common.util.DateUtils; import com.navercorp.pinpoint.common.server.util.SpanUtils; import com.navercorp.pinpoint.common.util.TimeUtils; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.rpc.util.ListUtils; import com.navercorp.pinpoint.web.dao.ApplicationTraceIndexDao; import com.navercorp.pinpoint.web.mapper.TraceIndexScatterMapper2; @@ -37,7 +38,6 @@ import com.navercorp.pinpoint.web.vo.LimitedScanResult; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.ResponseTimeRange; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; import com.sematext.hbase.wd.AbstractRowKeyDistributor; import org.apache.hadoop.hbase.Cell; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseDualReadDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseDualReadDao.java index bcd6e0ecd..b00407cad 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseDualReadDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseDualReadDao.java @@ -2,8 +2,8 @@ package com.navercorp.pinpoint.web.dao.hbase; import com.google.common.annotations.Beta; import com.navercorp.pinpoint.common.server.bo.SpanBo; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.dao.TraceDao; -import com.navercorp.pinpoint.web.vo.TransactionId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceCompatibilityDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceCompatibilityDao.java index 84115ac83..99c1ef923 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceCompatibilityDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceCompatibilityDao.java @@ -1,8 +1,8 @@ package com.navercorp.pinpoint.web.dao.hbase; import com.navercorp.pinpoint.common.server.bo.SpanBo; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.dao.TraceDao; -import com.navercorp.pinpoint.web.vo.TransactionId; import org.apache.commons.collections.CollectionUtils; import java.util.Collection; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDao.java index ca6e4eef0..133e02df3 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDao.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDao.java @@ -16,13 +16,15 @@ package com.navercorp.pinpoint.web.dao.hbase; +import com.navercorp.pinpoint.common.PinpointConstants; import com.navercorp.pinpoint.common.server.bo.SpanBo; import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.hbase.RowMapper; +import com.navercorp.pinpoint.common.util.BytesUtils; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.dao.TraceDao; import com.navercorp.pinpoint.web.mapper.CellTraceMapper; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.sematext.hbase.wd.AbstractRowKeyDistributor; import org.apache.hadoop.hbase.client.Get; import org.slf4j.Logger; @@ -78,8 +80,8 @@ public class HbaseTraceDao implements TraceDao { if (transactionId == null) { throw new NullPointerException("transactionId must not be null"); } - - byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(rowKey); return template2.get(HBaseTables.TRACES, traceIdBytes, HBaseTables.TRACES_CF_SPAN, spanMapper); } @@ -87,8 +89,8 @@ public class HbaseTraceDao implements TraceDao { if (transactionId == null) { throw new NullPointerException("transactionId must not be null"); } - - final byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + final byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(rowKey); Get get = new Get(traceIdBytes); get.addFamily(HBaseTables.TRACES_CF_SPAN); get.addFamily(HBaseTables.TRACES_CF_ANNOTATION); @@ -182,7 +184,8 @@ public class HbaseTraceDao implements TraceDao { final List getList = new ArrayList<>(transactionIdList.size()); for (TransactionId transactionId : transactionIdList) { - final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(rowKey); final Get get = new Get(transactionIdBytes); for (byte[] hbaseFamily : hBaseFamiliyList) { get.addFamily(hbaseFamily); @@ -197,12 +200,16 @@ public class HbaseTraceDao implements TraceDao { if (transactionId == null) { throw new NullPointerException("transactionId must not be null"); } - - final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(rowKey); Get get = new Get(transactionIdBytes); get.addFamily(HBaseTables.TRACES_CF_SPAN); get.addFamily(HBaseTables.TRACES_CF_TERMINALSPAN); return template2.get(HBaseTables.TRACES, get, spanMapper); } + private byte[] newRowKey(TransactionId transactionId) { + return BytesUtils.stringLongLongToBytes(transactionId.getAgentId(), PinpointConstants.AGENT_NAME_MAX_LEN, transactionId.getAgentStartTime(), transactionId.getTransactionSequence()); + } + } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDaoV2.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDaoV2.java index 00bad4dc9..ec7088a56 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDaoV2.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/hbase/HbaseTraceDaoV2.java @@ -2,13 +2,15 @@ package com.navercorp.pinpoint.web.dao.hbase; import com.google.common.annotations.Beta; import com.google.common.collect.Lists; +import com.navercorp.pinpoint.common.PinpointConstants; import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.HbaseOperations2; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.server.bo.SpanBo; +import com.navercorp.pinpoint.common.util.BytesUtils; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.dao.TraceDao; import com.navercorp.pinpoint.web.mapper.CellTraceMapper; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.sematext.hbase.wd.AbstractRowKeyDistributor; import org.apache.hadoop.hbase.client.Get; import org.slf4j.Logger; @@ -65,10 +67,15 @@ public class HbaseTraceDaoV2 implements TraceDao { throw new NullPointerException("transactionId must not be null"); } - byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + byte[] traceIdBytes = rowKeyDistributor.getDistributedKey(rowKey); return template2.get(HBaseTables.TRACE_V2, traceIdBytes, HBaseTables.TRACE_V2_CF_SPAN, spanMapperV2); } + private byte[] newRowKey(TransactionId transactionId) { + return BytesUtils.stringLongLongToBytes(transactionId.getAgentId(), PinpointConstants.AGENT_NAME_MAX_LEN, transactionId.getAgentStartTime(), transactionId.getTransactionSequence()); + } + @Deprecated @Override public List selectSpanAndAnnotation(TransactionId transactionId) { @@ -153,8 +160,8 @@ public class HbaseTraceDaoV2 implements TraceDao { final List getList = new ArrayList<>(transactionIdList.size()); for (TransactionId transactionId : transactionIdList) { - - final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(transactionId.getBytes()); + byte[] rowKey = newRowKey(transactionId); + final byte[] transactionIdBytes = rowKeyDistributor.getDistributedKey(rowKey); final Get get = new Get(transactionIdBytes); get.addFamily(columnFamily); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper.java b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper.java index cd84e11d9..bef52017a 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper.java @@ -26,7 +26,7 @@ import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.util.BytesUtils; import com.navercorp.pinpoint.common.util.TimeUtils; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; import org.apache.hadoop.hbase.Cell; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper2.java b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper2.java index 543390778..72e83ea2c 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper2.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper2.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.navercorp.pinpoint.common.util.TransactionId; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Result; @@ -29,7 +30,6 @@ import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.util.BytesUtils; import com.navercorp.pinpoint.common.util.TimeUtils; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; /** diff --git a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper3.java b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper3.java index 705f9ffef..eeda70418 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper3.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TraceIndexScatterMapper3.java @@ -21,8 +21,8 @@ import com.navercorp.pinpoint.common.hbase.HBaseTables; import com.navercorp.pinpoint.common.hbase.RowMapper; import com.navercorp.pinpoint.common.util.BytesUtils; import com.navercorp.pinpoint.common.util.TimeUtils; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.scatter.ScatterData; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Result; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TransactionIdMapper.java b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TransactionIdMapper.java index 02a1867de..6b527769f 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/mapper/TransactionIdMapper.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/mapper/TransactionIdMapper.java @@ -23,8 +23,8 @@ import java.util.List; import com.navercorp.pinpoint.common.buffer.Buffer; import com.navercorp.pinpoint.common.buffer.OffsetFixedBuffer; import com.navercorp.pinpoint.common.hbase.RowMapper; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Result; import org.slf4j.Logger; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/DotExtractor.java b/web/src/main/java/com/navercorp/pinpoint/web/service/DotExtractor.java index 584cb1b57..8e50a3ebc 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/DotExtractor.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/DotExtractor.java @@ -22,6 +22,7 @@ import com.navercorp.pinpoint.web.vo.*; import com.navercorp.pinpoint.web.vo.scatter.ApplicationScatterScanResult; import com.navercorp.pinpoint.web.vo.scatter.Dot; import com.navercorp.pinpoint.web.vo.scatter.ScatterScanResult; +import com.navercorp.pinpoint.common.util.TransactionId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,7 +71,7 @@ public class DotExtractor { private List getDotList(Application spanApplication) { List dotList = this.dotMap.get(spanApplication); - if(dotList == null) { + if (dotList == null) { dotList = new ArrayList<>(); this.dotMap.put(spanApplication, dotList); } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapService.java b/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapService.java index 90d550c80..2ffd18b78 100755 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapService.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapService.java @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.web.service; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.applicationmap.ApplicationMap; import com.navercorp.pinpoint.web.filter.Filter; import com.navercorp.pinpoint.web.vo.Application; @@ -23,7 +24,6 @@ import com.navercorp.pinpoint.web.vo.LimitedScanResult; import com.navercorp.pinpoint.web.vo.LoadFactor; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import java.util.List; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapServiceImpl.java index f5b3c7e5c..584452541 100755 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapServiceImpl.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/FilteredMapServiceImpl.java @@ -22,6 +22,7 @@ import com.navercorp.pinpoint.common.service.ServiceTypeRegistryService; import com.navercorp.pinpoint.common.trace.HistogramSchema; import com.navercorp.pinpoint.common.trace.HistogramSlot; import com.navercorp.pinpoint.common.trace.ServiceType; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.applicationmap.ApplicationMap; import com.navercorp.pinpoint.web.applicationmap.ApplicationMapBuilder; import com.navercorp.pinpoint.web.applicationmap.ApplicationMapWithScatterData; @@ -40,7 +41,6 @@ import com.navercorp.pinpoint.web.vo.LoadFactor; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.ResponseHistogramBuilder; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartService.java b/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartService.java index 010d221b7..666b125bd 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartService.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartService.java @@ -17,11 +17,11 @@ package com.navercorp.pinpoint.web.service; import com.navercorp.pinpoint.common.server.bo.SpanBo; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.filter.Filter; import com.navercorp.pinpoint.web.scatter.ScatterData; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.TransactionMetadataQuery; import com.navercorp.pinpoint.web.vo.scatter.Dot; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartServiceImpl.java index 065ec94a4..577642f7b 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartServiceImpl.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/ScatterChartServiceImpl.java @@ -17,13 +17,13 @@ package com.navercorp.pinpoint.web.service; import com.navercorp.pinpoint.common.server.bo.SpanBo; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.dao.ApplicationTraceIndexDao; import com.navercorp.pinpoint.web.dao.TraceDao; import com.navercorp.pinpoint.web.filter.Filter; import com.navercorp.pinpoint.web.scatter.ScatterData; import com.navercorp.pinpoint.web.vo.Range; import com.navercorp.pinpoint.web.vo.SelectedScatterArea; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.TransactionMetadataQuery; import com.navercorp.pinpoint.web.vo.scatter.Dot; import org.slf4j.Logger; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/SpanService.java b/web/src/main/java/com/navercorp/pinpoint/web/service/SpanService.java index 3dc5ef645..dc99434d9 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/SpanService.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/SpanService.java @@ -16,7 +16,7 @@ package com.navercorp.pinpoint.web.service; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; /** * @author emeroad diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/SpanServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/SpanServiceImpl.java index d9a06ec7d..a6d476045 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/SpanServiceImpl.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/SpanServiceImpl.java @@ -31,6 +31,7 @@ import com.navercorp.pinpoint.common.util.DefaultSqlParser; import com.navercorp.pinpoint.common.util.IntStringStringValue; import com.navercorp.pinpoint.common.util.OutputParameterParser; import com.navercorp.pinpoint.common.util.SqlParser; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.calltree.span.CallTree; import com.navercorp.pinpoint.web.calltree.span.CallTreeIterator; import com.navercorp.pinpoint.web.calltree.span.SpanAlign; @@ -41,7 +42,6 @@ import com.navercorp.pinpoint.web.dao.StringMetaDataDao; import com.navercorp.pinpoint.web.dao.TraceDao; import com.navercorp.pinpoint.web.security.MetaDataFilter; import com.navercorp.pinpoint.web.security.MetaDataFilter.MetaData; -import com.navercorp.pinpoint.web.vo.TransactionId; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoService.java b/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoService.java index ecdaa81a6..e91cddc9a 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoService.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoService.java @@ -18,11 +18,11 @@ package com.navercorp.pinpoint.web.service; import java.util.List; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.calltree.span.CallTreeIterator; import com.navercorp.pinpoint.web.filter.Filter; import com.navercorp.pinpoint.web.vo.BusinessTransactions; import com.navercorp.pinpoint.web.vo.Range; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.callstacks.RecordSet; /** diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoServiceImpl.java index 1b5666daa..82fd2a1a3 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoServiceImpl.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/service/TransactionInfoServiceImpl.java @@ -28,6 +28,7 @@ import com.navercorp.pinpoint.common.service.AnnotationKeyRegistryService; import com.navercorp.pinpoint.common.service.ServiceTypeRegistryService; import com.navercorp.pinpoint.common.trace.AnnotationKeyMatcher; import com.navercorp.pinpoint.common.trace.LoggingInfo; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.calltree.span.CallTreeIterator; import com.navercorp.pinpoint.web.calltree.span.CallTreeNode; import com.navercorp.pinpoint.web.calltree.span.SpanAlign; @@ -37,7 +38,6 @@ import com.navercorp.pinpoint.web.security.MetaDataFilter; import com.navercorp.pinpoint.web.security.MetaDataFilter.MetaData; import com.navercorp.pinpoint.web.vo.BusinessTransactions; import com.navercorp.pinpoint.web.vo.Range; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.callstacks.Record; import com.navercorp.pinpoint.web.vo.callstacks.RecordFactory; import com.navercorp.pinpoint.web.vo.callstacks.RecordSet; diff --git a/web/src/main/java/com/navercorp/pinpoint/web/view/TransactionInfoViewModel.java b/web/src/main/java/com/navercorp/pinpoint/web/view/TransactionInfoViewModel.java index f917d9080..e456d391a 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/view/TransactionInfoViewModel.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/view/TransactionInfoViewModel.java @@ -21,6 +21,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdUtils; import org.json.simple.JSONObject; import com.fasterxml.jackson.annotation.JsonProperty; @@ -28,7 +30,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.navercorp.pinpoint.common.util.DateUtils; import com.navercorp.pinpoint.web.applicationmap.Link; import com.navercorp.pinpoint.web.applicationmap.Node; -import com.navercorp.pinpoint.web.vo.TransactionId; import com.navercorp.pinpoint.web.vo.callstacks.Record; import com.navercorp.pinpoint.web.vo.callstacks.RecordSet; @@ -38,7 +39,7 @@ import com.navercorp.pinpoint.web.vo.callstacks.RecordSet; */ public class TransactionInfoViewModel { - private TransactionId traceId; + private TransactionId transactionId; private Collection nodes; private Collection links; private RecordSet recordSet; @@ -48,8 +49,8 @@ public class TransactionInfoViewModel { private String logPageUrl; private String disableButtonMessage; - public TransactionInfoViewModel(TransactionId traceId, Collection nodes, Collection links, RecordSet recordSet, String completeState, boolean logLinkEnable, String logButtonName, String logPageUrl, String disableButtonMessage) { - this.traceId = traceId; + public TransactionInfoViewModel(TransactionId transactionId, Collection nodes, Collection links, RecordSet recordSet, String completeState, boolean logLinkEnable, String logButtonName, String logPageUrl, String disableButtonMessage) { + this.transactionId = transactionId; this.nodes = nodes; this.links = links; this.recordSet = recordSet; @@ -67,7 +68,7 @@ public class TransactionInfoViewModel { @JsonProperty("transactionId") public String getTransactionId() { - return traceId.getFormatString(); + return TransactionIdUtils.formatString(transactionId); } @JsonProperty("agentId") @@ -114,7 +115,7 @@ public class TransactionInfoViewModel { public String getLogPageUrl() { if (logPageUrl != null && logPageUrl.length() > 0) { StringBuilder sb = new StringBuilder(); - sb.append("transactionId=").append(traceId.getFormatString()); + sb.append("transactionId=").append(getTransactionId()); sb.append("&time=").append(recordSet.getStartTime()); return logPageUrl + "?" + sb.toString(); } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionId.java b/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionId.java deleted file mode 100644 index b20f2a5bb..000000000 --- a/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionId.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2014 NAVER Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.navercorp.pinpoint.web.vo; - -import com.navercorp.pinpoint.common.PinpointConstants; -import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.TransactionIdUtils; - -/** - * @author emeroad - */ -// FIXME Remove Comparable interface -public class TransactionId implements Comparable { - public static final int AGENT_NAME_MAX_LEN = PinpointConstants.AGENT_NAME_MAX_LEN; - public static final int DISTRIBUTE_HASH_SIZE = 1; - - protected final String agentId; - protected final long agentStartTime; - protected final long transactionSequence; - - public TransactionId(byte[] transactionId) { - if (transactionId == null) { - throw new NullPointerException("transactionId must not be null"); - } - if (transactionId.length < BytesUtils.LONG_LONG_BYTE_LENGTH + AGENT_NAME_MAX_LEN) { - throw new IllegalArgumentException("invalid transactionId length:" + transactionId.length); - } - - this.agentId = BytesUtils.toStringAndRightTrim(transactionId, 0, AGENT_NAME_MAX_LEN); - this.agentStartTime = BytesUtils.bytesToLong(transactionId, AGENT_NAME_MAX_LEN); - this.transactionSequence = BytesUtils.bytesToLong(transactionId, BytesUtils.LONG_BYTE_LENGTH + AGENT_NAME_MAX_LEN); - } - - public TransactionId(byte[] transactionId, int offset) { - if (transactionId == null) { - throw new NullPointerException("transactionId must not be null"); - } - if (transactionId.length < BytesUtils.LONG_LONG_BYTE_LENGTH + AGENT_NAME_MAX_LEN + offset) { - throw new IllegalArgumentException("invalid transactionId length:" + transactionId.length); - } - - this.agentId = BytesUtils.toStringAndRightTrim(transactionId, offset, AGENT_NAME_MAX_LEN); - this.agentStartTime = BytesUtils.bytesToLong(transactionId, offset + AGENT_NAME_MAX_LEN); - this.transactionSequence = BytesUtils.bytesToLong(transactionId, offset + BytesUtils.LONG_BYTE_LENGTH + AGENT_NAME_MAX_LEN); - } - - public TransactionId(String agentId, long agentStartTime, long transactionSequence) { - if (agentId == null) { - throw new NullPointerException("agentId must not be null"); - } - this.agentId = agentId; - this.agentStartTime = agentStartTime; - this.transactionSequence = transactionSequence; - } - - public TransactionId(String transactionId) { - if (transactionId == null) { - throw new NullPointerException("transactionId must not be null"); - } - - com.navercorp.pinpoint.common.util.TransactionId parsedId = TransactionIdUtils.parseTransactionId(transactionId); - this.agentId = parsedId.getAgentId(); - this.agentStartTime = parsedId.getAgentStartTime(); - this.transactionSequence = parsedId.getTransactionSequence(); - } - - public String getAgentId() { - return agentId; - } - - public long getAgentStartTime() { - return agentStartTime; - } - - public long getTransactionSequence() { - return transactionSequence; - } - - public byte[] getBytes() { - return BytesUtils.stringLongLongToBytes(agentId, PinpointConstants.AGENT_NAME_MAX_LEN, agentStartTime, transactionSequence); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - TransactionId traceId = (TransactionId) o; - - if (agentStartTime != traceId.agentStartTime) return false; - if (transactionSequence != traceId.transactionSequence) return false; - if (!agentId.equals(traceId.agentId)) return false; - - return true; - } - - @Override - public int hashCode() { - int result = agentId.hashCode(); - result = 31 * result + (int) (agentStartTime ^ (agentStartTime >>> 32)); - result = 31 * result + (int) (transactionSequence ^ (transactionSequence >>> 32)); - return result; - } - - @Override - public String toString() { - String traceId = TransactionIdUtils.formatString(agentId, agentStartTime, transactionSequence); - return "TransactionId [" + traceId + "]"; - } - - public String getFormatString() { - return TransactionIdUtils.formatString(agentId, agentStartTime, transactionSequence); - } - - // FIXME remove - @Override - public int compareTo(TransactionId transactionId) { - int r1 = this.agentId.compareTo(transactionId.agentId); - if (r1 == 0) { - if (this.agentStartTime > transactionId.agentStartTime) { - return 1; - } else if (this.agentStartTime < transactionId.agentStartTime) { - return -1; - } else { - if (this.transactionSequence > transactionId.transactionSequence) { - return 1; - } else if (this.transactionSequence < transactionId.transactionSequence) { - return -1; - } else { - return 0; - } - } - } else { - return r1; - } - } -} diff --git a/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionMetadataQuery.java b/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionMetadataQuery.java index 6d4de9ae2..7e003687c 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionMetadataQuery.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/vo/TransactionMetadataQuery.java @@ -18,6 +18,8 @@ package com.navercorp.pinpoint.web.vo; import java.util.ArrayList; import java.util.List; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdUtils; /** * @author netspider @@ -35,7 +37,7 @@ public class TransactionMetadataQuery { if (transactionId == null) { throw new NullPointerException("transactionId must not be null"); } - TransactionId traceId = new TransactionId(transactionId); + TransactionId traceId = TransactionIdUtils.parseTransactionId(transactionId); QueryCondition condition = new QueryCondition(traceId, collectorAcceptTime, responseTime); queryConditionList.add(condition); } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/vo/scatter/Dot.java b/web/src/main/java/com/navercorp/pinpoint/web/vo/scatter/Dot.java index 1c846f34b..b30b84f8b 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/vo/scatter/Dot.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/vo/scatter/Dot.java @@ -17,8 +17,10 @@ package com.navercorp.pinpoint.web.vo.scatter; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdUtils; import com.navercorp.pinpoint.web.view.DotSerializer; -import com.navercorp.pinpoint.web.vo.TransactionId; + @JsonSerialize(using = DotSerializer.class) public class Dot { @@ -60,7 +62,7 @@ public class Dot { } public String getTransactionIdAsString() { - return transactionId.getFormatString(); + return TransactionIdUtils.formatString(transactionId); } public int getExceptionCode() { diff --git a/web/src/test/java/com/navercorp/pinpoint/web/mapper/AgentStatMapperTest.java b/web/src/test/java/com/navercorp/pinpoint/web/mapper/AgentStatMapperTest.java index eed54381f..e40ddbf34 100644 --- a/web/src/test/java/com/navercorp/pinpoint/web/mapper/AgentStatMapperTest.java +++ b/web/src/test/java/com/navercorp/pinpoint/web/mapper/AgentStatMapperTest.java @@ -43,7 +43,7 @@ import org.mockito.MockitoAnnotations; import com.navercorp.pinpoint.common.server.bo.AgentStatCpuLoadBo; import com.navercorp.pinpoint.common.server.bo.AgentStatMemoryGcBo; import com.navercorp.pinpoint.common.util.BytesUtils; -import com.navercorp.pinpoint.common.util.RowKeyUtils; +import com.navercorp.pinpoint.common.server.util.RowKeyUtils; import com.navercorp.pinpoint.common.util.TimeUtils; import com.navercorp.pinpoint.thrift.dto.TAgentStat; import com.navercorp.pinpoint.thrift.dto.TJvmGc; diff --git a/web/src/test/java/com/navercorp/pinpoint/web/scatter/ScatterDataTest.java b/web/src/test/java/com/navercorp/pinpoint/web/scatter/ScatterDataTest.java index d5f683cb1..5c38d06ff 100644 --- a/web/src/test/java/com/navercorp/pinpoint/web/scatter/ScatterDataTest.java +++ b/web/src/test/java/com/navercorp/pinpoint/web/scatter/ScatterDataTest.java @@ -15,7 +15,7 @@ package com.navercorp.pinpoint.web.scatter; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; import com.navercorp.pinpoint.web.vo.scatter.Dot; import org.junit.Assert; import org.junit.Test; diff --git a/web/src/test/java/com/navercorp/pinpoint/web/view/DotSerializerTest.java b/web/src/test/java/com/navercorp/pinpoint/web/view/DotSerializerTest.java index b1c5d78ff..9d1cbcaba 100644 --- a/web/src/test/java/com/navercorp/pinpoint/web/view/DotSerializerTest.java +++ b/web/src/test/java/com/navercorp/pinpoint/web/view/DotSerializerTest.java @@ -17,7 +17,8 @@ package com.navercorp.pinpoint.web.view; import com.fasterxml.jackson.databind.ObjectMapper; -import com.navercorp.pinpoint.web.vo.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionId; +import com.navercorp.pinpoint.common.util.TransactionIdUtils; import com.navercorp.pinpoint.web.vo.scatter.Dot; import org.junit.Assert; @@ -37,7 +38,7 @@ public class DotSerializerTest { @Test public void testSerialize() throws Exception { - TransactionId transactionId = new TransactionId("aigw.dev.1^1395798795017^1527177"); + TransactionId transactionId = TransactionIdUtils.parseTransactionId("aigw.dev.1^1395798795017^1527177"); Dot dot = new Dot(transactionId, 100, 99, 1, "agent"); String jsonValue = mapper.writeValueAsString(dot); Assert.assertEquals("[100,99,\"aigw.dev.1^1395798795017^1527177\",0]", jsonValue);