diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java index 82dd3c5c3835c19415a42fdf622a0df40cdebd6f..3854e1336288d0387f69270872e895baa2fc3ea2 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java @@ -68,7 +68,7 @@ public class ContextCarrier implements Serializable { public String serialize() { if (this.isValid()) { return StringUtil.join('|', - this.getTraceSegmentId().toBase64(), + this.getTraceSegmentId().encode(), this.getSpanId() + "", this.getParentApplicationInstanceId() + "", this.getEntryApplicationInstanceId() + "", diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java index f6e5623efe92d7f5f3a5bb5028f199c54989d88d..5dd702453c6c027be9184a9243b49fc10debaad1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java @@ -27,7 +27,7 @@ public abstract class DistributedTraceId { } public String toBase64() { - return id.toBase64(); + return id.encode(); } @Override diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java index db936aee5c10c62113b888f4addd27cef4808d6f..91d1926cdc59b0d9b79da8c53d799406b8529af0 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java @@ -15,29 +15,31 @@ public class ID { private long part1; private long part2; private long part3; + private String encoding; public ID(long part1, long part2, long part3) { this.part1 = part1; this.part2 = part2; this.part3 = part3; + this.encoding = null; } - public ID(String base64String) { + public ID(String encodingString) { int index = 0; for (int part = 0; part < 3; part++) { String encodedString; - char potentialTypeChar = base64String.charAt(index); + char potentialTypeChar = encodingString.charAt(index); long value; if (potentialTypeChar == '#') { - encodedString = base64String.substring(index + 1, index + 5); + encodedString = encodingString.substring(index + 1, index + 5); index += 5; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(0); } else if (potentialTypeChar == '$') { - encodedString = base64String.substring(index + 1, index + 9); + encodedString = encodingString.substring(index + 1, index + 9); index += 9; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().get(0); } else { - encodedString = base64String.substring(index, index + 12); + encodedString = encodingString.substring(index, index + 12); index += 12; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asLongBuffer().get(0); } @@ -53,8 +55,12 @@ public class ID { } } - public String toBase64() { - return long2Base64(part1) + long2Base64(part2) + long2Base64(part3); + public String encode() { + if (encoding == null) { + encoding = long2Base64(part1) + long2Base64(part2) + long2Base64(part3); + } else { + return encoding; + } } private String long2Base64(long partN) {