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 f6d5c2041f fix: use discovery namespace for blank upstream updates 
(#6905)
f6d5c2041f is described below

commit f6d5c2041fe73509099c7224c82373dc0836e644
Author: Jerry聊AI <[email protected]>
AuthorDate: Wed Aug 19 08:38:50 2026 +0800

    fix: use discovery namespace for blank upstream updates (#6905)
    
    * docs: describe discovery namespace upstream handling
    
    * fix: use discovery namespace for blank upstream updates
    
    * docs: remove discovery namespace notes
    
    ---------
    
    Co-authored-by: aias00 <[email protected]>
---
 .../DiscoveryDataChangedEventSyncListener.java      |  4 +---
 .../DiscoveryDataChangedEventSyncListenerTest.java  | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListener.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListener.java
index a3bb277243..78f47d40e0 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListener.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListener.java
@@ -44,8 +44,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
-import static 
org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID;
-
 /**
  * DiscoveryHandler.
  */
@@ -142,7 +140,7 @@ public class DiscoveryDataChangedEventSyncListener 
implements DataChangedEventLi
         List<DiscoveryUpstreamData> discoveryUpstreamDTOS = 
keyValueParser.parseValue(value);
         discoveryUpstreamDTOS.forEach(discoveryUpstreamData -> {
             if (StringUtils.isBlank(discoveryUpstreamData.getNamespaceId())) {
-                discoveryUpstreamData.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID);
+                
discoveryUpstreamData.setNamespaceId(discoverySyncData.getNamespaceId());
             }
         });
         discoveryUpstreamDTOS = discoveryUpstreamDTOS.stream()
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListenerTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListenerTest.java
index 671aa73c8b..3924428c27 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListenerTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/discovery/DiscoveryDataChangedEventSyncListenerTest.java
@@ -24,9 +24,11 @@ import 
org.apache.shenyu.admin.mapper.DiscoveryUpstreamMapper;
 import org.apache.shenyu.admin.model.entity.DiscoveryUpstreamDO;
 import org.apache.shenyu.common.dto.DiscoverySyncData;
 import org.apache.shenyu.common.dto.DiscoveryUpstreamData;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
@@ -35,6 +37,7 @@ import org.mockito.quality.Strictness;
 import org.springframework.context.ApplicationEventPublisher;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import static 
org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID;
@@ -94,4 +97,22 @@ public class DiscoveryDataChangedEventSyncListenerTest {
         verify(discoveryUpstreamMapper).deleteByUrl(anyString(), anyString());
     }
 
+    @Test
+    public void 
testOnChangeShouldUseDiscoveryNamespaceWhenUpstreamNamespaceBlank() {
+        final String namespaceId = "namespace-test";
+        final DiscoveryUpstreamData discoveryUpstreamData = new 
DiscoveryUpstreamData();
+        discoveryUpstreamData.setProtocol("http://";);
+        discoveryUpstreamData.setUrl("127.0.0.1:8080");
+        
when(keyValueParser.parseValue(anyString())).thenReturn(Collections.singletonList(discoveryUpstreamData));
+        when(contextInfo.getNamespaceId()).thenReturn(namespaceId);
+        
when(contextInfo.getDiscoveryHandlerId()).thenReturn("discoveryHandlerId");
+
+        DiscoveryDataChangedEvent event = new DiscoveryDataChangedEvent("key", 
"value", DiscoveryDataChangedEvent.Event.ADDED);
+        discoveryDataChangedEventSyncListener.onChange(event);
+
+        ArgumentCaptor<DiscoveryUpstreamDO> discoveryUpstreamCaptor = 
ArgumentCaptor.forClass(DiscoveryUpstreamDO.class);
+        
verify(discoveryUpstreamMapper).insert(discoveryUpstreamCaptor.capture());
+        Assertions.assertEquals(namespaceId, 
discoveryUpstreamCaptor.getValue().getNamespaceId());
+    }
+
 }

Reply via email to