summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkasakrisz <33458261+kasakrisz@users.noreply.github.com>2018-06-05 20:24:18 +0200
committerSiddharth <swagle@apache.org>2018-06-05 11:24:18 -0700
commitcc7fb90dfc8485afdf71fa95df453247979698b9 (patch)
tree994c9e73c1a6be65c7352797f2b95e1ed451b56c
parent3876e39fbd8fca4f2d346b8f5ca419fc82b1c592 (diff)
[AMBARI-24035] - Autostart is not obeying Maintenance Mode (#1465)
* AMBARI-24035 - Autostart is not obeying Maintenance Mode * AMBARI-24035 - Autostart is not obeying Maintenance Mode - fix method name
-rw-r--r--ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java41
1 files changed, 31 insertions, 10 deletions
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
index 81901307f8..3c44f571ae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
@@ -26,11 +26,13 @@ import org.apache.ambari.server.agent.stomp.dto.HostLevelParamsCluster;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.events.ClusterComponentsRepoChangedEvent;
import org.apache.ambari.server.events.HostLevelParamsUpdateEvent;
+import org.apache.ambari.server.events.MaintenanceModeEvent;
import org.apache.ambari.server.events.ServiceComponentRecoveryChangedEvent;
import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.commons.collections.MapUtils;
import com.google.common.eventbus.Subscribe;
@@ -119,23 +121,42 @@ public class HostLevelParamsHolder extends AgentHostDataHolder<HostLevelParamsUp
@Subscribe
public void onClusterComponentsRepoUpdate(ClusterComponentsRepoChangedEvent clusterComponentsRepoChangedEvent) throws AmbariException {
- updateDataOfCluster(clusterComponentsRepoChangedEvent.getClusterId());
+ Cluster cluster = clusters.getCluster(clusterComponentsRepoChangedEvent.getClusterId());
+ for (Host host : cluster.getHosts()) {
+ updateDataOfHost(clusterComponentsRepoChangedEvent.getClusterId(), cluster, host);
+ }
}
@Subscribe
public void onServiceComponentRecoveryChanged(ServiceComponentRecoveryChangedEvent event) throws AmbariException {
- updateDataOfCluster(event.getClusterId());
+ long clusterId = event.getClusterId();
+ Cluster cluster = clusters.getCluster(clusterId);
+ for (ServiceComponentHost host : cluster.getServiceComponentHosts(event.getServiceName(), event.getComponentName())) {
+ updateDataOfHost(clusterId, cluster, host.getHost());
+ }
+ }
+
+ private void updateDataOfHost(long clusterId, Cluster cluster, Host host) throws AmbariException {
+ HostLevelParamsUpdateEvent hostLevelParamsUpdateEvent = new HostLevelParamsUpdateEvent(Long.toString(clusterId),
+ new HostLevelParamsCluster(
+ m_ambariManagementController.get().retrieveHostRepositories(cluster, host),
+ recoveryConfigHelper.getRecoveryConfig(cluster.getClusterName(), host.getHostName())));
+ hostLevelParamsUpdateEvent.setHostId(host.getHostId());
+ updateData(hostLevelParamsUpdateEvent);
}
- private void updateDataOfCluster(long clusterId) throws AmbariException {
+ @Subscribe
+ public void onMaintenanceModeChanged(MaintenanceModeEvent event) throws AmbariException {
+ long clusterId = event.getClusterId();
Cluster cluster = clusters.getCluster(clusterId);
- for (Host host : cluster.getHosts()) {
- HostLevelParamsUpdateEvent hostLevelParamsUpdateEvent = new HostLevelParamsUpdateEvent(Long.toString(clusterId),
- new HostLevelParamsCluster(
- m_ambariManagementController.get().retrieveHostRepositories(cluster, host),
- recoveryConfigHelper.getRecoveryConfig(cluster.getClusterName(), host.getHostName())));
- hostLevelParamsUpdateEvent.setHostId(host.getHostId());
- updateData(hostLevelParamsUpdateEvent);
+ if (event.getHost() != null || event.getServiceComponentHost() != null) {
+ Host host = event.getHost() != null ? event.getHost() : event.getServiceComponentHost().getHost();
+ updateDataOfHost(clusterId, cluster, host);
+ }
+ else if (event.getService() != null) {
+ for (String hostName : event.getService().getServiceHosts()) {
+ updateDataOfHost(clusterId, cluster, cluster.getHost(hostName));
+ }
}
}
}