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