This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new bc64c6a Make the extension header really extendable (#5590)
bc64c6a is described below
commit bc64c6a12770031478d29e2f19004796584374c9
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Wed Sep 30 07:33:23 2020 +0800
Make the extension header really extendable (#5590)
---
.../apm/agent/core/context/ExtensionContext.java | 24 +++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ExtensionContext.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ExtensionContext.java
index 8106fa6..e2564a8 100644
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ExtensionContext.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ExtensionContext.java
@@ -18,13 +18,13 @@
package org.apache.skywalking.apm.agent.core.context;
-import org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan;
-
import java.util.Objects;
+import org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan;
+import org.apache.skywalking.apm.util.StringUtil;
/**
- * Extension context, It provides the interaction capabilities between the
agents
- * deployed in upstream and downstream services.
+ * Extension context, It provides the interaction capabilities between the
agents deployed in upstream and downstream
+ * services.
*/
public class ExtensionContext {
@@ -46,7 +46,15 @@ public class ExtensionContext {
* Deserialize data from {@link String}
*/
void deserialize(String value) {
- this.skipAnalysis = Objects.equals(value, "1");
+ if (StringUtil.isEmpty(value)) {
+ return;
+ }
+ final String[] extensionParts = value.split("-");
+ // All parts of the extension header are optional.
+ // only try to read it when it exist.
+ if (extensionParts.length > 0) {
+ this.skipAnalysis = Objects.equals(extensionParts[0], "1");
+ }
}
/**
@@ -87,8 +95,10 @@ public class ExtensionContext {
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
ExtensionContext that = (ExtensionContext) o;
return skipAnalysis == that.skipAnalysis;
}