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 ab8b1f7843 Tolerate parameter value in illegal JSON format. (#11032)
ab8b1f7843 is described below
commit ab8b1f7843bad44c92ee9b59d8c35fe49b3f2603
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Sat Jul 1 18:53:58 2023 +0200
Tolerate parameter value in illegal JSON format. (#11032)
---
docs/en/changes/changes.md | 2 ++
.../oap/server/core/analysis/metrics/Event.java | 2 +-
.../oap/server/core/query/type/event/Event.java | 19 +++++++++++++++----
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index cc984da4b2..1abfcd1817 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -33,6 +33,8 @@
* Fix wrong environment variable name `SW_OTEL_RECEIVER_ENABLED_OTEL_RULES` to
right `SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES`.
* Fix instance query in JDBC implementation.
* Set the `SW_QUERY_MAX_QUERY_COMPLEXITY` default value to 3000(was 1000).
+* Accept `length=4000` parameter value of the event. It was 2000.
+* Tolerate parameter value in illegal JSON format.
#### UI
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java
index 59555b8b10..73ad0e27f6 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java
@@ -74,7 +74,7 @@ public class Event extends Metrics {
public static final String LAYER = "layer";
- private static final int PARAMETER_MAX_LENGTH = 2000;
+ private static final int PARAMETER_MAX_LENGTH = 4000;
@Override
protected StorageID id0() {
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/event/Event.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/event/Event.java
index d3ecde438d..bd6bc0c320 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/event/Event.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/event/Event.java
@@ -19,13 +19,15 @@
package org.apache.skywalking.oap.server.core.query.type.event;
import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.Data;
-import org.apache.skywalking.oap.server.library.util.StringUtil;
import org.apache.skywalking.oap.server.core.query.type.KeyValue;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
@Data
public class Event {
@@ -55,9 +57,18 @@ public class Event {
public void setParameters(final String json) {
if (StringUtil.isNotEmpty(json)) {
- final Map<String, String> map = GSON.fromJson(json, new
TypeToken<Map<String, String>>() {
- }.getType());
- this.parameters = map.entrySet().stream().map(e -> new
KeyValue(e.getKey(), e.getValue())).collect(Collectors.toList());
+ try {
+ final Map<String, String> map = GSON.fromJson(json, new
TypeToken<Map<String, String>>() {
+ }.getType());
+ this.parameters = map.entrySet()
+ .stream()
+ .map(e -> new KeyValue(e.getKey(),
e.getValue()))
+ .collect(Collectors.toList());
+ } catch (JsonSyntaxException e) {
+ this.parameters = new ArrayList<>(2);
+ this.parameters.add(new KeyValue("json_parse", "false"));
+ this.parameters.add(new KeyValue("raw_parameters", json));
+ }
}
}
}