From a52ce3628c7121618573a5137c358bdfdc5a229b Mon Sep 17 00:00:00 2001 From: Nitin Kumar Maharana Date: Fri, 1 Sep 2017 16:43:39 +0530 Subject: [PATCH] CLOUDSTACK-10058: Error while opening the Settings tab in Secondary storage (#2254) Root Cause: Some global parameters contains NULL value, where the code doesn't handle NULL check. So it fails with an exception. Hence nothing appears on the field(ERROR). Solution: Added required NULL check. --- .../src/org/apache/cloudstack/framework/config/ConfigKey.java | 3 ++- server/src/com/cloud/server/ManagementServerImpl.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/config/src/org/apache/cloudstack/framework/config/ConfigKey.java b/framework/config/src/org/apache/cloudstack/framework/config/ConfigKey.java index 4a41306bf55..fb2a57b71f6 100644 --- a/framework/config/src/org/apache/cloudstack/framework/config/ConfigKey.java +++ b/framework/config/src/org/apache/cloudstack/framework/config/ConfigKey.java @@ -140,7 +140,8 @@ public class ConfigKey { public T value() { if (_value == null || isDynamic()) { ConfigurationVO vo = s_depot != null ? s_depot.global().findById(key()) : null; - _value = valueOf((vo != null && vo.getValue() != null) ? vo.getValue() : defaultValue()); + final String value = (vo != null && vo.getValue() != null) ? vo.getValue() : defaultValue(); + _value = ((value == null) ? (T)defaultValue() : valueOf(value)); } return _value; diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 79bc3d5bccf..b135b4ebd77 100644 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1754,7 +1754,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe if (configVo != null) { final ConfigKey key = _configDepot.get(param.getName()); if (key != null) { - configVo.setValue(key.valueIn(id).toString()); + configVo.setValue(key.valueIn(id) == null ? null : key.valueIn(id).toString()); configVOList.add(configVo); } else { s_logger.warn("ConfigDepot could not find parameter " + param.getName() + " for scope " + scope);