diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeRuleManager.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeRuleManager.java index 581b3116..ec48942c 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeRuleManager.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/DegradeRuleManager.java @@ -56,6 +56,7 @@ public class DegradeRuleManager { */ public static void register2Property(SentinelProperty> property) { synchronized (listener) { + RecordLog.info("[DegradeRuleManager] Registering new property to degrade rule manager"); currentProperty.removeListener(listener); property.addListener(listener); currentProperty = property; @@ -122,7 +123,7 @@ public class DegradeRuleManager { degradeRules.clear(); degradeRules.putAll(rules); } - RecordLog.info("receive degrade config: " + degradeRules); + RecordLog.info("[DegradeRuleManager] Degrade rules received: " + degradeRules); } @Override @@ -132,16 +133,22 @@ public class DegradeRuleManager { degradeRules.clear(); degradeRules.putAll(rules); } - RecordLog.info("init degrade config: " + degradeRules); + RecordLog.info("[DegradeRuleManager] Degrade rules loaded: " + degradeRules); } private Map> loadDegradeConf(List list) { - if (list == null) { - return null; - } Map> newRuleMap = new ConcurrentHashMap>(); + if (list == null || list.isEmpty()) { + return newRuleMap; + } + for (DegradeRule rule : list) { + if (!isValidRule(rule)) { + RecordLog.warn("[DegradeRuleManager] Ignoring invalid degrade rule when loading new rules: " + rule); + continue; + } + if (StringUtil.isBlank(rule.getLimitApp())) { rule.setLimitApp(FlowRule.LIMIT_APP_DEFAULT); } @@ -160,4 +167,7 @@ public class DegradeRuleManager { } + private static boolean isValidRule(DegradeRule rule) { + return rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0; + } } diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowRuleManager.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowRuleManager.java index f09701ae..3f719e6c 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowRuleManager.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowRuleManager.java @@ -51,7 +51,6 @@ import com.alibaba.csp.sentinel.slots.block.flow.controller.WarmUpController; * * @author jialiang.linjl */ - public class FlowRuleManager { private static final Map> flowRules = new ConcurrentHashMap>(); @@ -105,12 +104,13 @@ public class FlowRuleManager { private static Map> loadFlowConf(List list) { Map> newRuleMap = new ConcurrentHashMap>(); - if (list == null) { + if (list == null || list.isEmpty()) { return newRuleMap; } for (FlowRule rule : list) { - if (!isValid(rule)) { + if (!isValidRule(rule)) { + RecordLog.warn("[FlowRuleManager] Ignoring invalid flow rule when loading new flow rules: " + rule); continue; } if (StringUtil.isBlank(rule.getLimitApp())) { @@ -202,7 +202,7 @@ public class FlowRuleManager { } - private static boolean isValid(FlowRule rule) { + private static boolean isValidRule(FlowRule rule) { return rule != null && !StringUtil.isBlank(rule.getResource()); } }