diff --git a/dist-material/release-docs/LICENSE b/dist-material/release-docs/LICENSE
index 9e553204bd..bea42c58e9 100644
--- a/dist-material/release-docs/LICENSE
+++ b/dist-material/release-docs/LICENSE
@@ -345,7 +345,7 @@ The text of each license is the standard Apache 2.0 license.
https://mvnrepository.com/artifact/org.slf4j/log4j-over-slf4j/1.7.30 Apache-2.0
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.30 Apache-2.0
https://mvnrepository.com/artifact/org.xerial.snappy/snappy-java/1.1.8.1 Apache-2.0
- https://mvnrepository.com/artifact/org.yaml/snakeyaml/1.33 Apache-2.0
+ https://mvnrepository.com/artifact/org.yaml/snakeyaml/2.0 Apache-2.0
https://npmjs.com/package/typescript/v/4.7.4 4.7.4 Apache-2.0
========================================================================
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 9994029c43..cd329ae207 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -7,6 +7,7 @@
* Bump up Armeria version to 1.21.0.
* Clean up maven `pom.xml`s.
* Bump up Java version to 11.
+* Bump up snakeyaml to 2.0.
#### OAP Server
diff --git a/oap-server-bom/pom.xml b/oap-server-bom/pom.xml
index 8c22ed7d1d..a5ff3d2a8a 100644
--- a/oap-server-bom/pom.xml
+++ b/oap-server-bom/pom.xml
@@ -40,7 +40,7 @@
2.10.5
3.5.7
31.1-jre
- 1.33
+ 2.0
3.21.8
3.21.8
1.11
diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/meter/config/MeterConfigs.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/meter/config/MeterConfigs.java
index ac53413e78..b1eff96fbc 100644
--- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/meter/config/MeterConfigs.java
+++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/meter/config/MeterConfigs.java
@@ -65,7 +65,7 @@ public class MeterConfigs {
return null;
}
try (Reader r = new FileReader(f)) {
- return new Yaml().loadAs(r, MeterConfig.class);
+ return new Yaml().loadAs(r, MeterConfig.class);
} catch (IOException e) {
log.warn("Reading file {} failed", f, e);
}
diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/sampling/SamplingPolicySettingsReader.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/sampling/SamplingPolicySettingsReader.java
index e4b171882e..13b452e506 100644
--- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/sampling/SamplingPolicySettingsReader.java
+++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/sampling/SamplingPolicySettingsReader.java
@@ -18,6 +18,7 @@
package org.apache.skywalking.oap.server.analyzer.provider.trace.sampling;
import org.apache.skywalking.oap.server.library.util.StringUtil;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -32,15 +33,15 @@ import java.util.Objects;
* SamplingPolicySettings}.
*/
public class SamplingPolicySettingsReader {
- private Map yamlData;
+ private Map yamlData;
public SamplingPolicySettingsReader(InputStream inputStream) {
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
yamlData = yaml.load(inputStream);
}
public SamplingPolicySettingsReader(Reader io) {
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
yamlData = yaml.load(io);
}
diff --git a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/parser/YamlParserSpec.java b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/parser/YamlParserSpec.java
index bbd4dc4765..2b99b30bed 100644
--- a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/parser/YamlParserSpec.java
+++ b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/parser/YamlParserSpec.java
@@ -37,6 +37,10 @@ public class YamlParserSpec extends AbstractParserSpec {
}
public Yaml create() {
- return new Yaml(new SafeConstructor(), new Representer(), new DumperOptions(), loaderOptions);
+ final var dumperOptions = new DumperOptions();
+ return new Yaml(
+ new SafeConstructor(loaderOptions),
+ new Representer(dumperOptions),
+ dumperOptions, loaderOptions);
}
}
diff --git a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LALConfigs.java b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LALConfigs.java
index 11b0214570..4bf81310bf 100644
--- a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LALConfigs.java
+++ b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LALConfigs.java
@@ -62,7 +62,7 @@ public class LALConfigs {
})
.map(f -> {
try (final Reader r = new FileReader(f)) {
- return new Yaml().loadAs(r, LALConfigs.class);
+ return new Yaml().loadAs(r, LALConfigs.class);
} catch (IOException e) {
log.debug("Failed to read file {}", f, e);
}
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RulesReader.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RulesReader.java
index c0bfc8b8fd..924c04894f 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RulesReader.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RulesReader.java
@@ -38,6 +38,7 @@ import org.apache.skywalking.oap.server.core.alarm.provider.slack.SlackSettings;
import org.apache.skywalking.oap.server.core.alarm.provider.wechat.WechatSettings;
import org.apache.skywalking.oap.server.core.alarm.provider.welink.WeLinkSettings;
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -48,13 +49,13 @@ public class RulesReader {
private Map yamlData;
public RulesReader(InputStream inputStream) {
- Yaml yaml = new Yaml(new SafeConstructor());
- yamlData = (Map) yaml.load(inputStream);
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
+ yamlData = yaml.load(inputStream);
}
public RulesReader(Reader io) {
- Yaml yaml = new Yaml(new SafeConstructor());
- yamlData = (Map) yaml.load(io);
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
+ yamlData = yaml.load(io);
}
/**
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/ApdexThresholdConfig.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/ApdexThresholdConfig.java
index 083eaad6f3..457b4eebd3 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/ApdexThresholdConfig.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/ApdexThresholdConfig.java
@@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.configuration.api.ConfigChangeWatcher;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.CoreModuleProvider;
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -95,7 +96,7 @@ public class ApdexThresholdConfig extends ConfigChangeWatcher implements Configu
@SuppressWarnings("unchecked")
private void updateConfig(final Reader contentRender) {
- dictionary = (Map) new Yaml(new SafeConstructor()).load(contentRender);
+ dictionary = new Yaml(new SafeConstructor(new LoaderOptions())).load(contentRender);
if (dictionary == null) {
dictionary = Collections.emptyMap();
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/EndpointGroupingRuleReader.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/EndpointGroupingRuleReader.java
index 88dfffa84b..a7bc86a67b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/EndpointGroupingRuleReader.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/EndpointGroupingRuleReader.java
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.apache.skywalking.oap.server.library.util.StringUtil;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -34,12 +35,12 @@ public class EndpointGroupingRuleReader {
private Map yamlData;
public EndpointGroupingRuleReader(InputStream inputStream) {
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
yamlData = (Map) yaml.load(inputStream);
}
public EndpointGroupingRuleReader(Reader io) {
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
yamlData = (Map) yaml.load(io);
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/openapi/EndpointGroupingRuleReader4Openapi.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/openapi/EndpointGroupingRuleReader4Openapi.java
index 21c8555499..4347359363 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/openapi/EndpointGroupingRuleReader4Openapi.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/openapi/EndpointGroupingRuleReader4Openapi.java
@@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import org.apache.skywalking.oap.server.library.util.StringUtil;
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -99,7 +100,7 @@ public class EndpointGroupingRuleReader4Openapi {
continue;
}
Reader reader = new FileReader(file);
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
Map openapiData = yaml.load(reader);
if (openapiData != null) {
serviceOpenapiDefMap.computeIfAbsent(getServiceName(openapiDefPath, file, openapiData), k -> new ArrayList<>()).add(openapiData);
@@ -119,7 +120,7 @@ public class EndpointGroupingRuleReader4Openapi {
serviceName = itemNameInfo[0];
}
Reader reader = new StringReader(openapiDefs);
- Yaml yaml = new Yaml(new SafeConstructor());
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
Map openapiData = yaml.load(reader);
if (openapiData != null) {
serviceOpenapiDefMap.computeIfAbsent(getServiceName(serviceName, openapiData), k -> new ArrayList<>())
diff --git a/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/yaml/ClassFilterConstructor.java b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/yaml/ClassFilterConstructor.java
index c31f324013..fc5d03bce5 100644
--- a/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/yaml/ClassFilterConstructor.java
+++ b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/yaml/ClassFilterConstructor.java
@@ -18,18 +18,22 @@
package org.apache.skywalking.oap.server.library.util.yaml;
-import lombok.RequiredArgsConstructor;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.constructor.Constructor;
/**
* Whitelist constructor implementation for YAML snake.
* Copied from Apache ShardingSphere.
*/
-@RequiredArgsConstructor
public final class ClassFilterConstructor extends Constructor {
private final Class>[] acceptClasses;
+ public ClassFilterConstructor(final Class>[] acceptClasses) {
+ super(new LoaderOptions());
+ this.acceptClasses = acceptClasses;
+ }
+
@Override
protected Class> getClassForName(final String name) throws ClassNotFoundException {
for (Class extends Object> each : acceptClasses) {
@@ -39,4 +43,4 @@ public final class ClassFilterConstructor extends Constructor {
}
throw new IllegalArgumentException(String.format("Class is not accepted: %s", name));
}
-}
\ No newline at end of file
+}
diff --git a/oap-server/server-receiver-plugin/configuration-discovery-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/recevier/configuration/discovery/AgentConfigurationsReader.java b/oap-server/server-receiver-plugin/configuration-discovery-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/recevier/configuration/discovery/AgentConfigurationsReader.java
index 69d44cae58..27d581a6a8 100644
--- a/oap-server/server-receiver-plugin/configuration-discovery-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/recevier/configuration/discovery/AgentConfigurationsReader.java
+++ b/oap-server/server-receiver-plugin/configuration-discovery-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/recevier/configuration/discovery/AgentConfigurationsReader.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
+import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -37,13 +38,13 @@ public class AgentConfigurationsReader {
private Map yamlData;
public AgentConfigurationsReader(InputStream inputStream) {
- Yaml yaml = new Yaml(new SafeConstructor());
- yamlData = (Map) yaml.load(inputStream);
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
+ yamlData = yaml.load(inputStream);
}
public AgentConfigurationsReader(Reader io) {
- Yaml yaml = new Yaml(new SafeConstructor());
- yamlData = (Map) yaml.load(io);
+ Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
+ yamlData = yaml.load(io);
}
public AgentConfigurationsTable readAgentConfigurationsTable() {
diff --git a/oap-server/server-receiver-plugin/skywalking-zabbix-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zabbix/provider/config/ZabbixConfigs.java b/oap-server/server-receiver-plugin/skywalking-zabbix-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zabbix/provider/config/ZabbixConfigs.java
index 9d5c5730f0..5a01165192 100644
--- a/oap-server/server-receiver-plugin/skywalking-zabbix-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zabbix/provider/config/ZabbixConfigs.java
+++ b/oap-server/server-receiver-plugin/skywalking-zabbix-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zabbix/provider/config/ZabbixConfigs.java
@@ -59,7 +59,7 @@ public class ZabbixConfigs {
return null;
}
try (Reader r = new FileReader(f)) {
- return new Yaml().loadAs(r, ZabbixConfig.class);
+ return new Yaml().loadAs(r, ZabbixConfig.class);
} catch (IOException e) {
log.warn("Reading file {} failed", f, e);
}