diff --git a/CHANGES.md b/CHANGES.md index 0ebb9d5fbfea1a512acd68eb85c0d1f4758142d1..f8abf95d77b7dba57537f9c4e33f591bf7037200 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -46,6 +46,7 @@ Release Notes. * Fix CounterWindow increase computing issue. * Performance: optimize Envoy ALS analyzer performance in high traffic load scenario (reduce ~1cpu in ~10k RPS). * Performance: trim useless metadata fields in Envoy ALS metadata to improve performance. +* Fix: slowDBAccessThreshold dynamic config error when not configured. #### UI * Fix the date component for log conditions. diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/DBLatencyThresholdsAndWatcher.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/DBLatencyThresholdsAndWatcher.java index 596a322d6a9bdf880d0cf6d22465f3d6f4f9a04c..f9ebb3a78eb46d59a65f1cd9b0ad8a40afde4d0a 100644 --- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/DBLatencyThresholdsAndWatcher.java +++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/DBLatencyThresholdsAndWatcher.java @@ -23,17 +23,17 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import org.apache.skywalking.oap.server.analyzer.module.AnalyzerModule; import org.apache.skywalking.oap.server.configuration.api.ConfigChangeWatcher; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.library.module.ModuleProvider; public class DBLatencyThresholdsAndWatcher extends ConfigChangeWatcher { private AtomicReference> thresholds; - private AtomicReference settingsString; + private final String initialSettingsString; + private volatile String dynamicSettingsString; public DBLatencyThresholdsAndWatcher(String config, ModuleProvider provider) { super(AnalyzerModule.NAME, provider, "slowDBAccessThreshold"); thresholds = new AtomicReference<>(new HashMap<>()); - settingsString = new AtomicReference<>(Const.EMPTY_STRING); + initialSettingsString = config; activeSetting(config); } @@ -47,12 +47,8 @@ public class DBLatencyThresholdsAndWatcher extends ConfigChangeWatcher { newThresholds.put(typeValue[0].trim().toLowerCase(), Integer.parseInt(typeValue[1].trim())); } } - if (!newThresholds.containsKey("default")) { - newThresholds.put("default", 10000); - } thresholds.set(newThresholds); - settingsString.set(config); } public int getThreshold(String type) { @@ -67,14 +63,16 @@ public class DBLatencyThresholdsAndWatcher extends ConfigChangeWatcher { @Override public void notify(ConfigChangeEvent value) { if (EventType.DELETE.equals(value.getEventType())) { - activeSetting(""); + dynamicSettingsString = null; + activeSetting(initialSettingsString); } else { + dynamicSettingsString = value.getNewValue(); activeSetting(value.getNewValue()); } } @Override public String value() { - return settingsString.get(); + return dynamicSettingsString; } }