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<>();