From 913df20d5a402cf53efceae4bd8000c80758f57a Mon Sep 17 00:00:00 2001 From: hengyuss <1183660933@qq.com> Date: Fri, 26 Jun 2026 20:45:19 +0800 Subject: [PATCH 1/2] fix: fix rule and selector cache not used --- .../plugin/base/AbstractShenyuPlugin.java | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java index 83b1e9fa8124..63c443c25309 100644 --- a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java +++ b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java @@ -40,12 +40,7 @@ import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -58,16 +53,16 @@ public abstract class AbstractShenyuPlugin implements ShenyuPlugin { private static final String URI_CONDITION_TYPE = "uri"; private ShenyuConfig.SelectorMatchCache selectorMatchConfig; - + private ShenyuConfig.RuleMatchCache ruleMatchConfig; /** * this is Template Method child has implements your own logic. * * @param exchange exchange the current server exchange {@linkplain ServerWebExchange} - * @param chain chain the current chain {@linkplain ServerWebExchange} + * @param chain chain the current chain {@linkplain ServerWebExchange} * @param selector selector {@linkplain SelectorData} - * @param rule rule {@linkplain RuleData} + * @param rule rule {@linkplain RuleData} * @return {@code Mono} to indicate when request handling is complete */ protected abstract Mono doExecute(ServerWebExchange exchange, ShenyuPluginChain chain, SelectorData selector, RuleData rule); @@ -99,9 +94,11 @@ public Mono execute(final ServerWebExchange exchange, final ShenyuPluginCh if (Objects.nonNull(selectorData) && StringUtils.isBlank(selectorData.getId())) { return handleSelectorIfNull(pluginName, exchange, chain); } - selectorData = defaultMatchSelector(exchange, selectors, path); if (Objects.isNull(selectorData)) { - return handleSelectorIfNull(pluginName, exchange, chain); + selectorData = defaultMatchSelector(exchange, selectors, path); + if (Objects.isNull(selectorData)) { + return handleSelectorIfNull(pluginName, exchange, chain); + } } printLog(selectorData, pluginName); if (!selectorData.getContinued()) { @@ -125,18 +122,20 @@ public Mono execute(final ServerWebExchange exchange, final ShenyuPluginCh if (Objects.nonNull(ruleData) && Objects.isNull(ruleData.getId())) { return handleRuleIfNull(pluginName, exchange, chain); } - ruleData = defaultMatchRule(exchange, rules, path); if (Objects.isNull(ruleData)) { - return handleRuleIfNull(pluginName, exchange, chain); + ruleData = defaultMatchRule(exchange, rules, path); + if (Objects.isNull(ruleData)) { + return handleRuleIfNull(pluginName, exchange, chain); + } } printLog(ruleData, pluginName); return doExecute(exchange, chain, selectorData, ruleData); } - + protected String getRawPath(final ServerWebExchange exchange) { return exchange.getRequest().getURI().getRawPath(); } - + private void initCacheConfig() { if (Objects.isNull(selectorMatchConfig) || Objects.isNull(ruleMatchConfig)) { ShenyuConfig shenyuConfig = SpringBeanUtils.getInstance().getBean(ShenyuConfig.class); @@ -144,11 +143,11 @@ private void initCacheConfig() { ruleMatchConfig = shenyuConfig.getRuleMatchCache(); } } - + private SelectorData obtainSelectorDataCacheIfEnabled(final String path) { return selectorMatchConfig.getCache().getEnabled() ? MatchDataCache.getInstance().obtainSelectorData(named(), path) : null; } - + private RuleData obtainRuleDataCacheIfEnabled(final String path) { return ruleMatchConfig.getCache().getEnabled() ? MatchDataCache.getInstance().obtainRuleData(named(), path) : null; } @@ -172,7 +171,7 @@ private void cacheSelectorData(final String path, final SelectorData selectorDat } } } - + private void cacheRuleData(final String path, final RuleData ruleData) { // if the ruleCache is disabled or rule data is null, not cache rule data. if (Boolean.FALSE.equals(ruleMatchConfig.getCache().getEnabled()) || Objects.isNull(ruleData) @@ -201,25 +200,25 @@ private RuleData defaultRuleData(final SelectorData selectorData) { ruleData.setId(Constants.DEFAULT_RULE); return ruleData; } - + /** * Handle selector if null mono. * * @param pluginName the plugin name - * @param exchange the exchange - * @param chain the chain + * @param exchange the exchange + * @param chain the chain * @return the mono */ protected Mono handleSelectorIfNull(final String pluginName, final ServerWebExchange exchange, final ShenyuPluginChain chain) { return chain.execute(exchange); } - + /** * Handle rule if null mono. * * @param pluginName the plugin name - * @param exchange the exchange - * @param chain the chain + * @param exchange the exchange + * @param chain the chain * @return the mono */ protected Mono handleRuleIfNull(final String pluginName, final ServerWebExchange exchange, final ShenyuPluginChain chain) { @@ -295,7 +294,7 @@ private RuleData manyMatchRule(final List filterRuleData) { private Boolean filterRule(final RuleData ruleData, final ServerWebExchange exchange) { return ruleData.getEnabled() && MatchStrategyFactory.match(ruleData.getMatchMode(), ruleData.getConditionDataList(), exchange); } - + private SelectorData defaultMatchSelector(final ServerWebExchange exchange, final List selectors, final String path) { Pair matchSelectorPair = matchSelector(exchange, selectors); SelectorData selectorData = matchSelectorPair.getRight(); @@ -315,7 +314,7 @@ private SelectorData defaultMatchSelector(final ServerWebExchange exchange, fina return null; } } - + private RuleData defaultMatchRule(final ServerWebExchange exchange, final List rules, final String path) { Pair matchRulePair = matchRule(exchange, rules); RuleData ruleData = matchRulePair.getRight(); @@ -335,25 +334,25 @@ private RuleData defaultMatchRule(final ServerWebExchange exchange, final List Date: Fri, 26 Jun 2026 21:30:06 +0800 Subject: [PATCH 2/2] fix:fix checkStyle --- .../apache/shenyu/plugin/base/AbstractShenyuPlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java index 63c443c25309..6f20bce22276 100644 --- a/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java +++ b/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java @@ -40,7 +40,12 @@ import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /**