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