diff options
author | kasakrisz <33458261+kasakrisz@users.noreply.github.com> | 2018-06-05 20:24:18 +0200 |
---|---|---|
committer | Siddharth <swagle@apache.org> | 2018-06-05 11:24:18 -0700 |
commit | cc7fb90dfc8485afdf71fa95df453247979698b9 (patch) | |
tree | 994c9e73c1a6be65c7352797f2b95e1ed451b56c | |
parent | 3876e39fbd8fca4f2d346b8f5ca419fc82b1c592 (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.java | 41 |
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)); + } } } } |