This is an automated email from the ASF dual-hosted git repository.
Aias00 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 df92e2aa95 [type: bug] Fix REFRESH clearing only first plugin's parent
path in AbstractPathDataChangedListener (#6832) (#6998)
df92e2aa95 is described below
commit df92e2aa954fa52567ea35bc57385e3bfb54ad1c
Author: Arvin <[email protected]>
AuthorDate: Fri Sep 4 16:12:37 2026 +0800
[type: bug] Fix REFRESH clearing only first plugin's parent path in
AbstractPathDataChangedListener (#6832) (#6998)
Signed-off-by: zhang-arvin <[email protected]>
Co-authored-by: aias00 <[email protected]>
---
.../listener/AbstractPathDataChangedListener.java | 29 ++++++++++++----------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractPathDataChangedListener.java
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractPathDataChangedListener.java
index 7c4811c17f..587d277fcb 100644
---
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractPathDataChangedListener.java
+++
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractPathDataChangedListener.java
@@ -31,8 +31,9 @@ import org.apache.shenyu.common.utils.GsonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Optional;
+import java.util.stream.Collectors;
/**
* AbstractPathDataChangedListener.
@@ -112,12 +113,13 @@ public abstract class AbstractPathDataChangedListener
implements DataChangedList
@Override
public void onSelectorChanged(final List<SelectorData> changed, final
DataEventTypeEnum eventType) {
if (eventType == DataEventTypeEnum.REFRESH &&
CollectionUtils.isNotEmpty(changed)) {
- Optional<SelectorData> selectorDataOptional =
changed.stream().findFirst();
- if (selectorDataOptional.isPresent()) {
- SelectorData firstData = selectorDataOptional.get();
- String selectorParentPath =
DefaultPathConstants.buildSelectorParentPath(firstData.getNamespaceId(),
firstData.getPluginName());
- deletePathRecursive(selectorParentPath);
- }
+ changed.stream()
+ .collect(Collectors.groupingBy(
+ data ->
DefaultPathConstants.buildSelectorParentPath(data.getNamespaceId(),
data.getPluginName()),
+ LinkedHashMap::new,
+ Collectors.toList()))
+ .keySet()
+ .forEach(this::deletePathRecursive);
}
for (SelectorData data : changed) {
String selectorRealPath =
DefaultPathConstants.buildSelectorRealPath(data.getNamespaceId(),
data.getPluginName(), data.getId());
@@ -157,12 +159,13 @@ public abstract class AbstractPathDataChangedListener
implements DataChangedList
@Override
public void onRuleChanged(final List<RuleData> changed, final
DataEventTypeEnum eventType) {
if (eventType == DataEventTypeEnum.REFRESH &&
CollectionUtils.isNotEmpty(changed)) {
- Optional<RuleData> ruleDataOptional = changed.stream().findFirst();
- if (ruleDataOptional.isPresent()) {
- RuleData firstData = ruleDataOptional.get();
- String selectorParentPath =
DefaultPathConstants.buildRuleParentPath(firstData.getNamespaceId(),
firstData.getPluginName());
- deletePathRecursive(selectorParentPath);
- }
+ changed.stream()
+ .collect(Collectors.groupingBy(
+ data ->
DefaultPathConstants.buildRuleParentPath(data.getNamespaceId(),
data.getPluginName()),
+ LinkedHashMap::new,
+ Collectors.toList()))
+ .keySet()
+ .forEach(this::deletePathRecursive);
}
for (RuleData data : changed) {
String ruleRealPath =
DefaultPathConstants.buildRulePath(data.getNamespaceId(), data.getPluginName(),
data.getSelectorId(), data.getId());