This is an automated email from the ASF dual-hosted git repository.
asnaik pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new f6aec32 AMBARI-25327 : Prevent NPE for bindNotificationDispatchers
and getServiceConfigVersionRequest (#3037)
f6aec32 is described below
commit f6aec3286da30d42c7faef2e84e88b968bcdf040
Author: Viraj Jasani
AuthorDate: Wed Oct 16 13:05:11 2019 +0530
AMBARI-25327 : Prevent NPE for bindNotificationDispatchers and
getServiceConfigVersionRequest (#3037)
* AMBARI-25327 : Prevent NPE for bindNotificationDispatchers and
getServiceConfigVersionRequest
* minor change
* logging null classname instance
---
.../ambari/server/controller/ControllerModule.java | 41 --
.../internal/ClusterResourceProvider.java | 24 +
2 files changed, 40 insertions(+), 25 deletions(-)
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index 114d671..f587c47 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -666,25 +666,30 @@ public class ControllerModule extends AbstractModule {
// the dispatch factory
for (BeanDefinition beanDefinition : beanDefinitions) {
String className = beanDefinition.getBeanClassName();
- Class clazz = ClassUtils.resolveClassName(className,
- ClassUtils.getDefaultClassLoader());
-
- try {
-NotificationDispatcher dispatcher;
-if (clazz.equals(AmbariSNMPDispatcher.class)) {
- dispatcher = (NotificationDispatcher)
clazz.getConstructor(Integer.class).newInstance(configuration.getAmbariSNMPUdpBindPort());
-} else if (clazz.equals(SNMPDispatcher.class)) {
- dispatcher = (NotificationDispatcher)
clazz.getConstructor(Integer.class).newInstance(configuration.getSNMPUdpBindPort());
-} else {
- dispatcher = (NotificationDispatcher) clazz.newInstance();
+ if (className != null) {
+Class clazz = ClassUtils.resolveClassName(className,
+ClassUtils.getDefaultClassLoader());
+try {
+ NotificationDispatcher dispatcher;
+ if (clazz.equals(AmbariSNMPDispatcher.class)) {
+dispatcher = (NotificationDispatcher)
clazz.getConstructor(Integer.class)
+.newInstance(configuration.getAmbariSNMPUdpBindPort());
+ } else if (clazz.equals(SNMPDispatcher.class)) {
+dispatcher = (NotificationDispatcher)
clazz.getConstructor(Integer.class)
+.newInstance(configuration.getSNMPUdpBindPort());
+ } else {
+dispatcher = (NotificationDispatcher) clazz.newInstance();
+ }
+ dispatchFactory.register(dispatcher.getType(), dispatcher);
+ bind((Class) clazz).toInstance(dispatcher);
+ LOG.info("Binding and registering notification dispatcher {}",
clazz);
+} catch (Exception exception) {
+ LOG.error("Unable to bind and register notification dispatcher {}",
+ clazz, exception);
}
-dispatchFactory.register(dispatcher.getType(), dispatcher);
-bind((Class) clazz).toInstance(dispatcher);
-
-LOG.info("Binding and registering notification dispatcher {}", clazz);
- } catch (Exception exception) {
-LOG.error("Unable to bind and register notification dispatcher {}",
-clazz, exception);
+ } else {
+LOG.error("Binding and registering notification dispatcher is not
possible for" +
+" beanDefinition: {} in the absence of className", beanDefinition);
}
}
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
index 18ed30a..1c62f9c 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
@@ -466,16 +466,26 @@ public class ClusterResourceProvider extends
AbstractControllerResourceProvider
String absCategory = PropertyHelper.getPropertyCategory(entry.getKey());
String propName = PropertyHelper.getPropertyName(entry.getKey());
- if (absCategory.startsWith(parentCategory +
"/desired_service_config_version")) {
+ if (absCategory != null &&
+ absCategory.startsWith(parentCategory +
"/desired_service_config_version")) {
serviceConfigVersionRequest =
(serviceConfigVersionRequest ==null