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 <45253632+wwe...@users.noreply.github.com>
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<>();

Reply via email to