This is an automated email from the ASF dual-hosted git repository.
dengliming pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 314dfbc307 fix(plugin): remove cached rules without handles (#7132)
314dfbc307 is described below
commit 314dfbc30705be340592f9ab19f3af7ad2f74150
Author: Liming Deng <[email protected]>
AuthorDate: Sat Sep 19 22:15:07 2026 +0800
fix(plugin): remove cached rules without handles (#7132)
---
.../context/path/handler/ContextPathPluginDataHandler.java | 2 +-
.../path/handler/ContextPathPluginDataHandlerTest.java | 10 +++++++++-
.../response/handler/ModifyResponsePluginDataHandler.java | 2 +-
.../handler/ModifyResponsePluginDataHandlerTest.java | 2 ++
.../mapping/handler/ParamMappingPluginDataHandler.java | 2 +-
.../param/mapping/handler/ParamMappingPluginDataTest.java | 5 ++---
.../plugin/redirect/handler/RedirectPluginDataHandler.java | 2 +-
.../apache/shenyu/plugin/redirect/RedirectPluginTest.java | 14 ++++++++++++++
.../plugin/rewrite/handler/RewritePluginDataHandler.java | 2 +-
.../rewrite/handler/RewritePluginDataHandlerTest.java | 1 +
10 files changed, 33 insertions(+), 9 deletions(-)
diff --git
a/shenyu-plugin/shenyu-plugin-context-path/src/main/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-context-path/src/main/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandler.java
index 0dfe474144..58b93cc924 100644
---
a/shenyu-plugin/shenyu-plugin-context-path/src/main/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-context-path/src/main/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandler.java
@@ -60,7 +60,7 @@ public class ContextPathPluginDataHandler implements
PluginDataHandler {
@Override
public void removeRule(final RuleData ruleData) {
- Optional.ofNullable(ruleData.getHandle()).ifPresent(s ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ Optional.ofNullable(ruleData).ifPresent(data ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(data)));
}
@Override
diff --git
a/shenyu-plugin/shenyu-plugin-context-path/src/test/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-context-path/src/test/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandlerTest.java
index 57c3c9a955..8478e3ffc9 100644
---
a/shenyu-plugin/shenyu-plugin-context-path/src/test/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-context-path/src/test/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandlerTest.java
@@ -19,10 +19,12 @@ package org.apache.shenyu.plugin.context.path.handler;
import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.enums.PluginEnum;
+import org.apache.shenyu.plugin.base.utils.CacheKeyUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* ContextPathPluginDataHandler Test.
@@ -43,7 +45,13 @@ public class ContextPathPluginDataHandlerTest {
@Test
public void removeRuleTest() {
-
contextPathPluginDataHandler.removeRule(RuleData.builder().handle("{}").build());
+ RuleData ruleData =
RuleData.builder().selectorId("selector").id("rule").handle("{}").build();
+ contextPathPluginDataHandler.handlerRule(ruleData);
+ ruleData.setHandle(null);
+
+ contextPathPluginDataHandler.removeRule(ruleData);
+
+
assertNull(ContextPathPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(ruleData)));
}
@Test
diff --git
a/shenyu-plugin/shenyu-plugin-modify-response/src/main/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-modify-response/src/main/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandler.java
index b5f769fb44..10177df6ff 100644
---
a/shenyu-plugin/shenyu-plugin-modify-response/src/main/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-modify-response/src/main/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandler.java
@@ -46,7 +46,7 @@ public class ModifyResponsePluginDataHandler implements
PluginDataHandler {
@Override
public void removeRule(final RuleData ruleData) {
- Optional.ofNullable(ruleData.getHandle()).ifPresent(s ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ Optional.ofNullable(ruleData).ifPresent(data ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(data)));
}
@Override
diff --git
a/shenyu-plugin/shenyu-plugin-modify-response/src/test/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-modify-response/src/test/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandlerTest.java
index 26f5e6b115..1ab505c652 100644
---
a/shenyu-plugin/shenyu-plugin-modify-response/src/test/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-modify-response/src/test/java/org/apache/shenyu/plugin/modify/response/handler/ModifyResponsePluginDataHandlerTest.java
@@ -65,6 +65,8 @@ public final class ModifyResponsePluginDataHandlerTest {
*/
@Test
public void removeSelectorTest() {
+ modifyResponsePluginDataHandler.handlerRule(ruleData);
+ when(ruleData.getHandle()).thenReturn(null);
modifyResponsePluginDataHandler.removeRule(ruleData);
ModifyResponseRuleHandle modifyResponseRuleHandle =
ModifyResponsePluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(ruleData));
assertNull(modifyResponseRuleHandle);
diff --git
a/shenyu-plugin/shenyu-plugin-param-mapping/src/main/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-param-mapping/src/main/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataHandler.java
index 10e2b50ffc..666b1671f7 100644
---
a/shenyu-plugin/shenyu-plugin-param-mapping/src/main/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-param-mapping/src/main/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataHandler.java
@@ -46,7 +46,7 @@ public class ParamMappingPluginDataHandler implements
PluginDataHandler {
@Override
public void removeRule(final RuleData ruleData) {
- Optional.ofNullable(ruleData.getHandle()).ifPresent(s ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ Optional.ofNullable(ruleData).ifPresent(data ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(data)));
}
@Override
diff --git
a/shenyu-plugin/shenyu-plugin-param-mapping/src/test/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataTest.java
b/shenyu-plugin/shenyu-plugin-param-mapping/src/test/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataTest.java
index 4922a398a8..fb93c29a6e 100644
---
a/shenyu-plugin/shenyu-plugin-param-mapping/src/test/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataTest.java
+++
b/shenyu-plugin/shenyu-plugin-param-mapping/src/test/java/org/apache/shenyu/plugin/param/mapping/handler/ParamMappingPluginDataTest.java
@@ -58,10 +58,9 @@ public class ParamMappingPluginDataTest {
RuleData ruleData = new RuleData();
ruleData.setSelectorId("test");
ruleData.setName("test-param-mappin-plugin");
- this.paramMappingPluginDataHandler.removeRule(this.ruleData);
-
Assertions.assertNull(ParamMappingPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(this.ruleData)));
+ ruleData.setId(this.ruleData.getId());
this.paramMappingPluginDataHandler.removeRule(ruleData);
-
Assertions.assertNull(ParamMappingPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(ruleData)));
+
Assertions.assertNull(ParamMappingPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(this.ruleData)));
}
@Test
diff --git
a/shenyu-plugin/shenyu-plugin-redirect/src/main/java/org/apache/shenyu/plugin/redirect/handler/RedirectPluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-redirect/src/main/java/org/apache/shenyu/plugin/redirect/handler/RedirectPluginDataHandler.java
index c02c403ddd..f6fcdbf746 100644
---
a/shenyu-plugin/shenyu-plugin-redirect/src/main/java/org/apache/shenyu/plugin/redirect/handler/RedirectPluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-redirect/src/main/java/org/apache/shenyu/plugin/redirect/handler/RedirectPluginDataHandler.java
@@ -46,7 +46,7 @@ public class RedirectPluginDataHandler implements
PluginDataHandler {
@Override
public void removeRule(final RuleData ruleData) {
- Optional.ofNullable(ruleData.getHandle()).ifPresent(s ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ Optional.ofNullable(ruleData).ifPresent(data ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(data)));
}
@Override
diff --git
a/shenyu-plugin/shenyu-plugin-redirect/src/test/java/org/apache/shenyu/plugin/redirect/RedirectPluginTest.java
b/shenyu-plugin/shenyu-plugin-redirect/src/test/java/org/apache/shenyu/plugin/redirect/RedirectPluginTest.java
index 6d92b4cd96..d0b8f6b4fe 100644
---
a/shenyu-plugin/shenyu-plugin-redirect/src/test/java/org/apache/shenyu/plugin/redirect/RedirectPluginTest.java
+++
b/shenyu-plugin/shenyu-plugin-redirect/src/test/java/org/apache/shenyu/plugin/redirect/RedirectPluginTest.java
@@ -38,6 +38,7 @@ import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -94,4 +95,17 @@ public final class RedirectPluginTest {
assertThat(PluginEnum.REDIRECT.getName(), Matchers.is(result));
}
+ @Test
+ public void testRemoveRuleWithoutHandle() {
+ RuleData ruleData =
RuleData.builder().selectorId("selector").id("rule")
+ .handle("{\"redirectURI\":\"/test\"}").build();
+ RedirectPluginDataHandler handler = new RedirectPluginDataHandler();
+ handler.handlerRule(ruleData);
+ ruleData.setHandle(null);
+
+ handler.removeRule(ruleData);
+
+
assertNull(RedirectPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ }
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-rewrite/src/main/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-rewrite/src/main/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandler.java
index 9fbbfadaf9..60ff792dcf 100644
---
a/shenyu-plugin/shenyu-plugin-rewrite/src/main/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-rewrite/src/main/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandler.java
@@ -46,7 +46,7 @@ public class RewritePluginDataHandler implements
PluginDataHandler {
@Override
public void removeRule(final RuleData ruleData) {
- Optional.ofNullable(ruleData.getHandle()).ifPresent(s ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(ruleData)));
+ Optional.ofNullable(ruleData).ifPresent(data ->
CACHED_HANDLE.get().removeHandle(CacheKeyUtils.INST.getKey(data)));
}
@Override
diff --git
a/shenyu-plugin/shenyu-plugin-rewrite/src/test/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-rewrite/src/test/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandlerTest.java
index 8394c326a8..0b3a9b6860 100644
---
a/shenyu-plugin/shenyu-plugin-rewrite/src/test/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-rewrite/src/test/java/org/apache/shenyu/plugin/rewrite/handler/RewritePluginDataHandlerTest.java
@@ -52,6 +52,7 @@ public final class RewritePluginDataHandlerTest {
Supplier<CommonHandleCache<String, RewriteHandle>> cache =
RewritePluginDataHandler.CACHED_HANDLE;
cache.get().cachedHandle("1_test", new RewriteHandle());
Assertions.assertNotNull(cache.get().obtainHandle("1_test"));
+ ruleData.setHandle(null);
rewritePluginDataHandler.removeRule(ruleData);
Assertions.assertNull(cache.get().obtainHandle("1_test"));
}