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 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); }