mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-25 20:55:59 +10:00
Merge pull request #1952 from emeroad/TraceV2/TraceFormatV2
#1819 trace format v2
This commit is contained in:
+1
-1
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
+4
-1
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.navercorp.pinpoint.common.util;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* @author Woonduk Kang(emeroad)
|
||||
*/
|
||||
public class TransactionIdComparator implements Comparator<TransactionId> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
+16
-15
@@ -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<TransactionId> 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<TransactionId> set = new TreeSet<TransactionId>(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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
+4
-2
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<TransactionId> 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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
@@ -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<Get> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<SpanBo> selectSpanAndAnnotation(TransactionId transactionId) {
|
||||
@@ -153,8 +160,8 @@ public class HbaseTraceDaoV2 implements TraceDao {
|
||||
|
||||
final List<Get> 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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<Dot> getDotList(Application spanApplication) {
|
||||
List<Dot> dotList = this.dotMap.get(spanApplication);
|
||||
if(dotList == null) {
|
||||
if (dotList == null) {
|
||||
dotList = new ArrayList<>();
|
||||
this.dotMap.put(spanApplication, dotList);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
@@ -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<Node> nodes;
|
||||
private Collection<Link> links;
|
||||
private RecordSet recordSet;
|
||||
@@ -48,8 +49,8 @@ public class TransactionInfoViewModel {
|
||||
private String logPageUrl;
|
||||
private String disableButtonMessage;
|
||||
|
||||
public TransactionInfoViewModel(TransactionId traceId, Collection<Node> nodes, Collection<Link> links, RecordSet recordSet, String completeState, boolean logLinkEnable, String logButtonName, String logPageUrl, String disableButtonMessage) {
|
||||
this.traceId = traceId;
|
||||
public TransactionInfoViewModel(TransactionId transactionId, Collection<Node> nodes, Collection<Link> 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();
|
||||
}
|
||||
|
||||
@@ -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<TransactionId> {
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user