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 9bf133f5ca fix(kubernetes): default the registry namespaces prop to 
match-all (#7328)
9bf133f5ca is described below

commit 9bf133f5ca183e98e5bfb07e3236e70122d4884d
Author: Sean-Walker0 <[email protected]>
AuthorDate: Sun Sep 27 12:58:39 2026 +0800

    fix(kubernetes): default the registry namespaces prop to match-all (#7328)
    
    init read properties.getProperty("namespaces").split(",") without a
    default, so a registry configuration that omits the namespaces property
    crashed with NullPointerException during startup. Every sibling
    repository defaults its optional props (zookeeper, nacos), and
    KubernetesClient#matchNamespaces already treats an empty namespace
    list as "match all namespaces", which is therefore the intended
    default here too.
    
    The new test fails on current master with the exact NPE and passes
    with this change.
    
    Co-authored-by: Sean-Walker0 
<[email protected]>
    Co-authored-by: aias00 <[email protected]>
---
 .../KubernetesInstanceRegisterRepository.java        |  4 +++-
 .../KubernetesInstanceRegisterRepositoryTest.java    | 20 ++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git 
a/shenyu-registry/shenyu-registry-kubernetes/src/main/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepository.java
 
b/shenyu-registry/shenyu-registry-kubernetes/src/main/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepository.java
index 6a44d91261..376da98988 100644
--- 
a/shenyu-registry/shenyu-registry-kubernetes/src/main/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepository.java
+++ 
b/shenyu-registry/shenyu-registry-kubernetes/src/main/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepository.java
@@ -24,6 +24,7 @@ import org.apache.shenyu.spi.Join;
 
 import java.net.URI;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 import java.util.stream.Collectors;
@@ -42,7 +43,8 @@ public class KubernetesInstanceRegisterRepository implements 
ShenyuInstanceRegis
         KubernetesConfig kubernetesConfig = new KubernetesConfig();
         kubernetesConfig.setDiscoveryServerUrl(config.getServerLists());
         kubernetesConfig.setEnabled(config.getEnabled());
-        
kubernetesConfig.setNamespaces(Arrays.asList(properties.getProperty("namespaces").split(",")));
+        String namespaces = properties.getProperty("namespaces", "");
+        kubernetesConfig.setNamespaces(namespaces.isEmpty() ? 
Collections.emptyList() : Arrays.asList(namespaces.split(",")));
         this.kubernetesClient = new KubernetesClient(kubernetesConfig);
     }
 
diff --git 
a/shenyu-registry/shenyu-registry-kubernetes/src/test/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepositoryTest.java
 
b/shenyu-registry/shenyu-registry-kubernetes/src/test/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepositoryTest.java
index 13b070c721..44a3289db6 100644
--- 
a/shenyu-registry/shenyu-registry-kubernetes/src/test/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepositoryTest.java
+++ 
b/shenyu-registry/shenyu-registry-kubernetes/src/test/java/org/apache/shenyu/registry/kubernetes/KubernetesInstanceRegisterRepositoryTest.java
@@ -225,4 +225,24 @@ public final class 
KubernetesInstanceRegisterRepositoryTest {
         instance.setNamespace(namespace);
         return instance;
     }
+
+    @Test
+    public void initShouldNotThrowWhenNamespacesPropertyIsAbsent() throws 
Exception {
+        RegisterConfig config = new RegisterConfig();
+        config.setServerLists(serverUrl);
+        config.setEnabled(true);
+        config.setProps(new Properties());
+        final KubernetesInstanceRegisterRepository repo = new 
KubernetesInstanceRegisterRepository();
+        repo.init(config);
+
+        Field clientField = 
KubernetesInstanceRegisterRepository.class.getDeclaredField("kubernetesClient");
+        clientField.setAccessible(true);
+        KubernetesClient client = (KubernetesClient) clientField.get(repo);
+        Field configField = 
KubernetesClient.class.getDeclaredField("kubernetesConfig");
+        configField.setAccessible(true);
+        KubernetesConfig kubernetesConfig = (KubernetesConfig) 
configField.get(client);
+        assertNotNull(kubernetesConfig);
+        assertTrue(kubernetesConfig.getNamespaces().isEmpty());
+    }
+
 }

Reply via email to