You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2018/05/16 11:31:30 UTC

[ambari] branch trunk updated: AMBARI-23855. Topology cache on agent side is not actual after unsupported services removal during stack upgrade. (mpapirkovskyy) (#1279)

This is an automated email from the ASF dual-hosted git repository.

mpapirkovskyy 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 6bf1db2  AMBARI-23855. Topology cache on agent side is not actual after unsupported services removal during stack upgrade. (mpapirkovskyy) (#1279)
6bf1db2 is described below

commit 6bf1db2438776fd9a17d9287c0acac6a428d07da
Author: Myroslav Papirkovskyi <mp...@apache.org>
AuthorDate: Wed May 16 14:31:28 2018 +0300

    AMBARI-23855. Topology cache on agent side is not actual after unsupported services removal during stack upgrade. (mpapirkovskyy) (#1279)
---
 .../alerts/AlertDefinitionsUIUpdateListener.java        | 17 ++++++++++-------
 .../DeleteUnsupportedServicesAndComponents.java         | 14 ++++++++++++--
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionsUIUpdateListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionsUIUpdateListener.java
index 06bfa9c..59ce006 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionsUIUpdateListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionsUIUpdateListener.java
@@ -114,10 +114,11 @@ public class AlertDefinitionsUIUpdateListener {
         LOG.warn(msg, e);
       }
     }
-
-    alertDefinitionsHolder.provideAlertDefinitionAgentUpdateEvent(UPDATE, event.getClusterId(), definitions, hostName);
-    Map<Long, AlertCluster> map = Collections.singletonMap(event.getClusterId(), new AlertCluster(definitions, hostName));
-    STOMPUpdatePublisher.publish(new AlertDefinitionsUIUpdateEvent(UPDATE, map));
+    if (!definitions.isEmpty()) {
+      alertDefinitionsHolder.provideAlertDefinitionAgentUpdateEvent(UPDATE, event.getClusterId(), definitions, hostName);
+      Map<Long, AlertCluster> map = Collections.singletonMap(event.getClusterId(), new AlertCluster(definitions, hostName));
+      STOMPUpdatePublisher.publish(new AlertDefinitionsUIUpdateEvent(UPDATE, map));
+    }
   }
 
   @Subscribe
@@ -127,9 +128,11 @@ public class AlertDefinitionsUIUpdateListener {
     if (event.isMasterComponent()) {
       definitions.putAll(helper.get().findByServiceMaster(event.getClusterId(), event.getServiceName()));
     }
-    alertDefinitionsHolder.provideAlertDefinitionAgentUpdateEvent(DELETE, event.getClusterId(), definitions, hostName);
-    Map<Long, AlertCluster> map = Collections.singletonMap(event.getClusterId(), new AlertCluster(definitions, hostName));
-    STOMPUpdatePublisher.publish(new AlertDefinitionsUIUpdateEvent(DELETE, map));
+    if (!definitions.isEmpty()) {
+      alertDefinitionsHolder.provideAlertDefinitionAgentUpdateEvent(DELETE, event.getClusterId(), definitions, hostName);
+      Map<Long, AlertCluster> map = Collections.singletonMap(event.getClusterId(), new AlertCluster(definitions, hostName));
+      STOMPUpdatePublisher.publish(new AlertDefinitionsUIUpdateEvent(DELETE, map));
+    }
   }
 
   private void handleSingleDefinitionChange(AlertDefinitionEventType eventType, AlertDefinition alertDefinition) throws AmbariException {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/DeleteUnsupportedServicesAndComponents.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/DeleteUnsupportedServicesAndComponents.java
index 03fb281..c7edc27 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/DeleteUnsupportedServicesAndComponents.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/DeleteUnsupportedServicesAndComponents.java
@@ -40,6 +40,7 @@ import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.ServiceComponent;
 import org.apache.ambari.server.state.ServiceComponentSupport;
 import org.apache.ambari.server.state.UpgradeContext;
+import org.apache.ambari.server.topology.STOMPComponentsDeleteHandler;
 import org.apache.commons.lang.StringUtils;
 
 import com.google.inject.Inject;
@@ -52,6 +53,9 @@ public class DeleteUnsupportedServicesAndComponents extends AbstractUpgradeServe
   @Inject
   private ServiceComponentSupport serviceComponentSupport;
 
+  @Inject
+  private STOMPComponentsDeleteHandler STOMPComponentsDeleteHandler;
+
   @Override
   public CommandReport execute(ConcurrentMap<String, Object> requestSharedDataContext) throws AmbariException, InterruptedException {
     Cluster cluster = getClusters().getCluster(getExecutionCommand().getClusterName());
@@ -68,7 +72,10 @@ public class DeleteUnsupportedServicesAndComponents extends AbstractUpgradeServe
   private Set<String> deleteUnsupportedServices(Cluster cluster, RepositoryVersionEntity repoVersion) throws AmbariException {
     Set<String> servicesToBeRemoved = serviceComponentSupport.unsupportedServices(cluster, repoVersion.getStackName(), repoVersion.getStackVersion());
     for (String serviceName : servicesToBeRemoved) {
-      cluster.deleteService(serviceName, new DeleteHostComponentStatusMetaData());
+      DeleteHostComponentStatusMetaData deleteMetaData = new DeleteHostComponentStatusMetaData();
+      cluster.deleteService(serviceName, deleteMetaData);
+      STOMPComponentsDeleteHandler.processDeleteByMetaDataException(deleteMetaData);
+      STOMPComponentsDeleteHandler.processDeleteByMetaData(deleteMetaData);
       deleteUpgradeHistory(cluster, history -> serviceName.equals(history.getServiceName()));
     }
     return servicesToBeRemoved;
@@ -77,7 +84,10 @@ public class DeleteUnsupportedServicesAndComponents extends AbstractUpgradeServe
   private Set<String> deleteUnsupportedComponents(Cluster cluster, RepositoryVersionEntity repoVersion) throws AmbariException {
     Set<String> deletedComponents = new HashSet<>();
     for (ServiceComponent component : serviceComponentSupport.unsupportedComponents(cluster, repoVersion.getStackName(), repoVersion.getStackVersion())) {
-      cluster.getService(component.getServiceName()).deleteServiceComponent(component.getName(), new DeleteHostComponentStatusMetaData());
+      DeleteHostComponentStatusMetaData deleteMetaData = new DeleteHostComponentStatusMetaData();
+      cluster.getService(component.getServiceName()).deleteServiceComponent(component.getName(), deleteMetaData);
+      STOMPComponentsDeleteHandler.processDeleteByMetaDataException(deleteMetaData);
+      STOMPComponentsDeleteHandler.processDeleteByMetaData(deleteMetaData);
       deleteUpgradeHistory(cluster, history -> component.getName().equals(history.getComponentName()));
       deletedComponents.add(component.getName());
     }

-- 
To stop receiving notification emails like this one, please contact
mpapirkovskyy@apache.org.