This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 5e40a09 Fix issue 6945 (#6948)
5e40a09 is described below
commit 5e40a0998a7dda8e2e69320c109ffb0a832c872d
Author: Joe <[email protected]>
AuthorDate: Sat May 15 17:38:51 2021 +0800
Fix issue 6945 (#6948)
---
CHANGES.md | 1 +
.../configmap/ConfigmapConfigurationWatcherRegister.java | 2 +-
.../configmap/ConfigmapConfigWatcherRegisterTest.java | 13 +++++++++++++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/CHANGES.md b/CHANGES.md
index e209ae1..9c48780 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -41,6 +41,7 @@ Release Notes.
* Fix: Envoy error logs are not persisted when no metrics are generated
* Fix: Memory leakage of low version etcd client.
[fix-issue](https://github.com/jurmous/etcd4j/pull/185)
* Allow multiple definitions as fallback in metadata-service-mapping.yaml file.
+* Fix: NPE when configmap has no data.
#### UI
* Add logo for kong plugin.
diff --git
a/oap-server/server-configuration/configuration-k8s-configmap/src/main/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationWatcherRegister.java
b/oap-server/server-configuration/configuration-k8s-configmap/src/main/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationWatcherRegister.java
index fd85acf..c6bcdbc 100644
---
a/oap-server/server-configuration/configuration-k8s-configmap/src/main/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationWatcherRegister.java
+++
b/oap-server/server-configuration/configuration-k8s-configmap/src/main/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationWatcherRegister.java
@@ -42,7 +42,7 @@ public class ConfigmapConfigurationWatcherRegister extends
ConfigWatcherRegister
final ConfigTable configTable = new ConfigTable();
Optional<V1ConfigMap> v1ConfigMap = informer.configMap();
for (final String name : keys) {
- final String value = v1ConfigMap.map(configMap ->
configMap.getData().get(name)).orElse(null);
+ final String value =
v1ConfigMap.map(V1ConfigMap::getData).map(data -> data.get(name)).orElse(null);
if (log.isDebugEnabled()) {
log.debug("read config: name:{} ,value:{}", name, value);
}
diff --git
a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
index 45ddf43..19e5177 100644
---
a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
+++
b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
@@ -58,6 +58,19 @@ public class ConfigmapConfigWatcherRegisterTest {
}
@Test
+ public void readConfigWhenConfigMapDataIsNull() throws Exception {
+ V1ConfigMap v1ConfigMap = new V1ConfigMap();
+
PowerMockito.doReturn(Optional.of(v1ConfigMap)).when(informer).configMap();
+ Optional<ConfigTable> optionalConfigTable = register.readConfig(new
HashSet<String>() {{
+ add("key1");
+ }});
+
+ Assert.assertTrue(optionalConfigTable.isPresent());
+ ConfigTable configTable = optionalConfigTable.get();
+ Assert.assertEquals(configTable.getItems().size(), 0);
+ }
+
+ @Test
public void readConfigWhenInformerNotwork() throws Exception {
PowerMockito.doReturn(Optional.empty()).when(informer).configMap();
Optional<ConfigTable> optionalConfigTable = register.readConfig(new
HashSet<String>() {{