This is an automated email from the ASF dual-hosted git repository.
xiaoyu 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 7b746021d5 [type:bugfix] proxy.selector and discovery not delete when
delete divide selector. (#5845)
7b746021d5 is described below
commit 7b746021d5d49aaa7adad1b832d8d3857a9fdd85
Author: Wweiei <[email protected]>
AuthorDate: Wed Dec 11 18:54:25 2024 +0800
[type:bugfix] proxy.selector and discovery not delete when delete divide
selector. (#5845)
---
.../shenyu/admin/discovery/AbstractDiscoveryProcessor.java | 11 +++++++++++
.../org/apache/shenyu/admin/discovery/DiscoveryProcessor.java | 7 +++++++
.../shenyu/admin/discovery/LocalDiscoveryProcessor.java | 11 +++++++++++
.../apache/shenyu/admin/service/impl/SelectorServiceImpl.java | 4 +++-
.../shenyu/admin/discovery/LocalDiscoveryProcessorTest.java | 7 +++++++
5 files changed, 39 insertions(+), 1 deletion(-)
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/AbstractDiscoveryProcessor.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/AbstractDiscoveryProcessor.java
index 2013e40377..303a04657c 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/AbstractDiscoveryProcessor.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/AbstractDiscoveryProcessor.java
@@ -134,6 +134,17 @@ public abstract class AbstractDiscoveryProcessor
implements DiscoveryProcessor,
});
}
+ @Override
+ public void removeSelectorUpstream(final ProxySelectorDTO
proxySelectorDTO) {
+ DiscoverySyncData discoverySyncData = new DiscoverySyncData();
+ discoverySyncData.setPluginName(proxySelectorDTO.getPluginName());
+ discoverySyncData.setSelectorId(proxySelectorDTO.getId());
+ discoverySyncData.setSelectorName(proxySelectorDTO.getName());
+ discoverySyncData.setNamespaceId(proxySelectorDTO.getNamespaceId());
+ DataChangedEvent dataChangedEvent = new
DataChangedEvent(ConfigGroupEnum.DISCOVER_UPSTREAM, DataEventTypeEnum.DELETE,
Collections.singletonList(discoverySyncData));
+ eventPublisher.publishEvent(dataChangedEvent);
+ }
+
@Override
public void changeUpstream(final ProxySelectorDTO proxySelectorDTO, final
List<DiscoveryUpstreamDTO> upstreamDTOS) {
DiscoverySyncData discoverySyncData = new DiscoverySyncData();
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryProcessor.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryProcessor.java
index e157a32c20..2f25d4206a 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryProcessor.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryProcessor.java
@@ -76,4 +76,11 @@ public interface DiscoveryProcessor {
*/
void fetchAll(DiscoveryHandlerDTO discoveryHandlerDTO, ProxySelectorDTO
proxySelectorDTO);
+ /**
+ * remove selector upstream.
+ *
+ * @param proxySelectorDTO proxySelectorDTO
+ */
+ void removeSelectorUpstream(ProxySelectorDTO proxySelectorDTO);
+
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessor.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessor.java
index 08be2f5a6d..0ea619c877 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessor.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessor.java
@@ -80,6 +80,17 @@ public class LocalDiscoveryProcessor implements
DiscoveryProcessor, ApplicationE
eventPublisher.publishEvent(dataChangedEvent);
}
+ @Override
+ public void removeSelectorUpstream(final ProxySelectorDTO
proxySelectorDTO) {
+ DiscoverySyncData discoverySyncData = new DiscoverySyncData();
+ discoverySyncData.setPluginName(proxySelectorDTO.getPluginName());
+ discoverySyncData.setSelectorId(proxySelectorDTO.getId());
+ discoverySyncData.setSelectorName(proxySelectorDTO.getName());
+ discoverySyncData.setNamespaceId(proxySelectorDTO.getNamespaceId());
+ DataChangedEvent dataChangedEvent = new
DataChangedEvent(ConfigGroupEnum.DISCOVER_UPSTREAM, DataEventTypeEnum.DELETE,
Collections.singletonList(discoverySyncData));
+ eventPublisher.publishEvent(dataChangedEvent);
+ }
+
@Override
public void changeUpstream(final ProxySelectorDTO proxySelectorDTO, final
List<DiscoveryUpstreamDTO> upstreamDTOS) {
DiscoverySyncData discoverySyncData = new DiscoverySyncData();
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
index 58d890a67e..e1a6bae006 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
@@ -294,12 +294,14 @@ public class SelectorServiceImpl implements
SelectorService {
if (Objects.nonNull(discoveryDO)) {
final DiscoveryProcessor discoveryProcessor =
discoveryProcessorHolder.chooseProcessor(discoveryDO.getType());
ProxySelectorDTO proxySelectorDTO = new ProxySelectorDTO();
+ proxySelectorDTO.setId(selector.getId());
proxySelectorDTO.setName(selector.getName());
-
proxySelectorDTO.setPluginName(pluginMap.getOrDefault(selector.getId(), ""));
+
proxySelectorDTO.setPluginName(pluginMap.getOrDefault(selector.getPluginId(),
""));
proxySelectorDTO.setNamespaceId(selector.getNamespaceId());
discoveryProcessor.removeProxySelector(DiscoveryTransfer.INSTANCE.mapToDTO(discoveryHandlerDO),
proxySelectorDTO);
if
(DiscoveryLevel.SELECTOR.getCode().equals(discoveryDO.getLevel())) {
discoveryProcessor.removeDiscovery(discoveryDO);
+
discoveryProcessor.removeSelectorUpstream(proxySelectorDTO);
discoveryMapper.delete(discoveryDO.getId());
}
}
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessorTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessorTest.java
index b1d5f49dc2..37522886bd 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessorTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/LocalDiscoveryProcessorTest.java
@@ -81,6 +81,13 @@ public class LocalDiscoveryProcessorTest {
verify(eventPublisher).publishEvent(any(DataChangedEvent.class));
}
+ @Test
+ public void testRemoveSelectorUpstream() {
+
doNothing().when(eventPublisher).publishEvent(any(DataChangedEvent.class));
+ localDiscoveryProcessor.removeSelectorUpstream(new ProxySelectorDTO());
+ verify(eventPublisher).publishEvent(any(DataChangedEvent.class));
+ }
+
@Test
public void testFetchAll() {
List<DiscoveryUpstreamDO> discoveryUpstreamDOS = new ArrayList<>();