kezhenxu94 commented on a change in pull request #4307: Clean up legacy v1
header logic, use built-in Base64 since JDK8
URL: https://github.com/apache/skywalking/pull/4307#discussion_r373829546
##########
File path:
apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextCarrier.java
##########
@@ -108,53 +103,36 @@ String serialize(HeaderVersion version) {
* @param text carries {@link #traceSegmentId} and {@link #spanId}, with
'|' split.
*/
ContextCarrier deserialize(String text, HeaderVersion version) {
- if (text != null) {
- // if this carrier is initialized by v1 or v2, don't do
deserialize again for performance.
- if (this.isValid(HeaderVersion.v1) ||
this.isValid(HeaderVersion.v2)) {
- return this;
- }
- if (HeaderVersion.v1.equals(version)) {
- String[] parts = text.split("\\|", 8);
- if (parts.length == 8) {
- try {
- this.traceSegmentId = new ID(parts[0]);
- this.spanId = Integer.parseInt(parts[1]);
- this.parentServiceInstanceId =
Integer.parseInt(parts[2]);
- this.entryServiceInstanceId =
Integer.parseInt(parts[3]);
- this.peerHost = parts[4];
- this.entryEndpointName = parts[5];
- this.parentEndpointName = parts[6];
- this.primaryDistributedTraceId = new
PropagatedTraceId(parts[7]);
- } catch (NumberFormatException e) {
-
- }
- }
- } else if (HeaderVersion.v2.equals(version)) {
- String[] parts = text.split("\\-", 9);
- if (parts.length == 9) {
- try {
- // parts[0] is sample flag, always trace if header
exists.
- this.primaryDistributedTraceId = new
PropagatedTraceId(Base64.decode2UTFString(parts[1]));
- this.traceSegmentId = new
ID(Base64.decode2UTFString(parts[2]));
- this.spanId = Integer.parseInt(parts[3]);
- this.parentServiceInstanceId =
Integer.parseInt(parts[4]);
- this.entryServiceInstanceId =
Integer.parseInt(parts[5]);
- this.peerHost = Base64.decode2UTFString(parts[6]);
- this.entryEndpointName =
Base64.decode2UTFString(parts[7]);
- this.parentEndpointName =
Base64.decode2UTFString(parts[8]);
- } catch (NumberFormatException e) {
-
- }
+ if (text == null) {
+ return this;
+ }
+ // if this carrier is initialized by v2, don't do deserialize again
for performance.
+ if (this.isValid(HeaderVersion.v2)) {
+ return this;
+ }
+ if (HeaderVersion.v2 == version) {
+ String[] parts = text.split("-", 9);
+ if (parts.length == 9) {
+ try {
+ // parts[0] is sample flag, always trace if header exists.
+ this.primaryDistributedTraceId = new
PropagatedTraceId(Base64.decode2UTFString(parts[1]));
+ this.traceSegmentId = new
ID(Base64.decode2UTFString(parts[2]));
+ this.spanId = Integer.parseInt(parts[3]);
+ this.parentServiceInstanceId = Integer.parseInt(parts[4]);
+ this.entryServiceInstanceId = Integer.parseInt(parts[5]);
+ this.peerHost = Base64.decode2UTFString(parts[6]);
+ this.entryEndpointName = Base64.decode2UTFString(parts[7]);
+ this.parentEndpointName =
Base64.decode2UTFString(parts[8]);
+ } catch (NumberFormatException ignored) {
+
Review comment:
Quick return to reduce nested levels
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services