diff options
author | kasakrisz <33458261+kasakrisz@users.noreply.github.com> | 2018-06-01 14:05:46 +0200 |
---|---|---|
committer | Doroszlai, Attila <6454655+adoroszlai@users.noreply.github.com> | 2018-06-01 14:05:46 +0200 |
commit | c043401740470f6930c230e66780ba2b30432b1b (patch) | |
tree | a4e03d023eae9a580a660746e079078401277c39 | |
parent | 607fe42f121e9453de3938fcff3f850c89866e0a (diff) |
AMBARI-24007. Components are getting down immediately after autostart (#1437)
3 files changed, 28 insertions, 15 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 fbd26dd129..81901307f8 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 @@ -17,7 +17,6 @@ */ package org.apache.ambari.server.agent.stomp; -import java.util.Collection; import java.util.Map; import java.util.TreeMap; @@ -27,6 +26,7 @@ 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.ServiceComponentRecoveryChangedEvent; import org.apache.ambari.server.events.publishers.AmbariEventPublisher; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; @@ -79,7 +79,7 @@ public class HostLevelParamsHolder extends AgentHostDataHolder<HostLevelParamsUp return hostLevelParamsUpdateEvent; } - protected boolean handleUpdate(HostLevelParamsUpdateEvent update) throws AmbariException { + protected boolean handleUpdate(HostLevelParamsUpdateEvent update) { boolean changed = false; if (MapUtils.isNotEmpty(update.getHostLevelParamsClusters())) { Long hostId = update.getHostId(); @@ -119,15 +119,21 @@ public class HostLevelParamsHolder extends AgentHostDataHolder<HostLevelParamsUp @Subscribe public void onClusterComponentsRepoUpdate(ClusterComponentsRepoChangedEvent clusterComponentsRepoChangedEvent) throws AmbariException { - Long clusterId = clusterComponentsRepoChangedEvent.getClusterId(); + updateDataOfCluster(clusterComponentsRepoChangedEvent.getClusterId()); + } + + @Subscribe + public void onServiceComponentRecoveryChanged(ServiceComponentRecoveryChangedEvent event) throws AmbariException { + updateDataOfCluster(event.getClusterId()); + } + private void updateDataOfCluster(long clusterId) throws AmbariException { Cluster cluster = clusters.getCluster(clusterId); - Collection<Host> hosts = clusters.getCluster(clusterId).getHosts(); - for (Host host : hosts) { + 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()))); + new HostLevelParamsCluster( + m_ambariManagementController.get().retrieveHostRepositories(cluster, host), + recoveryConfigHelper.getRecoveryConfig(cluster.getClusterName(), host.getHostName()))); hostLevelParamsUpdateEvent.setHostId(host.getHostId()); updateData(hostLevelParamsUpdateEvent); } diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/ServiceComponentRecoveryChangedEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/ServiceComponentRecoveryChangedEvent.java index b1d67b19e0..c7049fb481 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/events/ServiceComponentRecoveryChangedEvent.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/events/ServiceComponentRecoveryChangedEvent.java @@ -24,20 +24,26 @@ package org.apache.ambari.server.events; * component is enabled or disabled for auto start. */ public class ServiceComponentRecoveryChangedEvent extends AmbariEvent { - private String m_clusterName; - private String m_serviceName; - private String m_componentName; - private boolean m_recoveryEnabled; + private final long m_clusterId; + private final String m_clusterName; + private final String m_serviceName; + private final String m_componentName; + private final boolean m_recoveryEnabled; public ServiceComponentRecoveryChangedEvent( - String clusterName, String serviceName, String componentName, boolean recoveryEnabled) { + long clusterId, String clusterName, String serviceName, String componentName, boolean recoveryEnabled) { super(AmbariEventType.SERVICE_COMPONENT_RECOVERY_CHANGED); + m_clusterId = clusterId; m_clusterName = clusterName; m_serviceName = serviceName; m_componentName = componentName; m_recoveryEnabled = recoveryEnabled; } + public long getClusterId() { + return m_clusterId; + } + /** * Get the cluster name * @@ -80,7 +86,8 @@ public class ServiceComponentRecoveryChangedEvent extends AmbariEvent { @Override public String toString() { StringBuilder buffer = new StringBuilder("ServiceComponentRecoveryChangeEvent{"); - buffer.append("clusterName=").append(getClusterName()); + buffer.append("clusterId=").append(getClusterId()); + buffer.append(", clusterName=").append(getClusterName()); buffer.append(", serviceName=").append(getServiceName()); buffer.append(", componentName=").append(getComponentName()); buffer.append(", recoveryEnabled=").append(isRecoveryEnabled()); diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java index 7efccd066c..e9c2e77ab0 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java @@ -248,7 +248,7 @@ public class ServiceComponentImpl implements ServiceComponent { // broadcast the change ServiceComponentRecoveryChangedEvent event = new ServiceComponentRecoveryChangedEvent( - getClusterName(), getServiceName(), getName(), isRecoveryEnabled()); + getClusterId(), getClusterName(), getServiceName(), getName(), isRecoveryEnabled()); eventPublisher.publish(event); } else { |