Repository: ambari
Updated Branches:
  refs/heads/trunk 3d99b680c -> 84c3e7f06


AMBARI-16230. Sporadic errors when deploying the cluster (oleewere)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/84c3e7f0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/84c3e7f0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/84c3e7f0

Branch: refs/heads/trunk
Commit: 84c3e7f06e1fb2e55d37f046ec584407c0b5c8eb
Parents: 3d99b68
Author: oleewere <[email protected]>
Authored: Wed May 11 11:48:06 2016 +0200
Committer: oleewere <[email protected]>
Committed: Wed May 11 14:42:45 2016 +0200

----------------------------------------------------------------------
 .../controller/internal/ServiceResourceProvider.java |  1 -
 .../org/apache/ambari/server/state/ServiceImpl.java  |  3 +++
 .../ambari/server/state/cluster/ClusterImpl.java     | 15 +++++----------
 .../org/apache/ambari/server/events/EventsTest.java  |  1 -
 .../org/apache/ambari/server/orm/OrmTestHelper.java  |  2 --
 .../server/state/alerts/AlertEventPublisherTest.java |  1 -
 .../server/state/alerts/InitialAlertEventTest.java   |  1 -
 7 files changed, 8 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
index 47342f3..56196c1 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
@@ -356,7 +356,6 @@ public class ServiceResourceProvider extends 
AbstractControllerResourceProvider
       s.setDesiredState(state);
       s.setDesiredStackVersion(cluster.getDesiredStackVersion());
       s.persist();
-      cluster.addService(s);
       // Initialize service widgets
       getManagementController().initializeWidgetsAndLayouts(cluster, s);
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
index 487489b..c47bbbc 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
@@ -475,6 +475,7 @@ public class ServiceImpl implements Service {
 
           // publish the service installed event
           StackId stackId = cluster.getDesiredStackVersion();
+          cluster.addService(this);
 
           ServiceInstalledEvent event = new ServiceInstalledEvent(
               getClusterId(), stackId.getStackName(),
@@ -484,6 +485,8 @@ public class ServiceImpl implements Service {
         } else {
           saveIfPersisted();
         }
+      } catch (AmbariException e) {
+        LOG.error("Adding service '{}' is failed before publishing service 
installed event.", getName(), e);
       } finally {
         readWriteLock.writeLock().unlock();
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index f38c25a..cd0812b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -172,7 +172,7 @@ public class ClusterImpl implements Cluster {
 
   private volatile boolean desiredStackVersionSet = true;
 
-  private volatile Map<String, Service> services = null;
+  private Map<String, Service> services = null;
 
   /**
    * [ Config Type -> [ Config Version Tag -> Config ] ]
@@ -325,6 +325,8 @@ public class ClusterImpl implements Cluster {
     // Load any active stack upgrades.
     loadStackUpgrade();
 
+    loadServices();
+
     // register to receive stuff
     eventPublisher.register(this);
     this.eventPublisher = eventPublisher;
@@ -395,7 +397,6 @@ public class ClusterImpl implements Cluster {
    * We need this for live status checks.
    */
   public void loadServiceHostComponents() {
-    loadServices();
     if (svcHostsLoaded) {
       return;
     }
@@ -967,7 +968,6 @@ public class ClusterImpl implements Cluster {
   @Override
   public void addService(Service service)
     throws AmbariException {
-    loadServices();
     clusterGlobalLock.writeLock().lock();
     try {
       if (LOG.isDebugEnabled()) {
@@ -988,7 +988,6 @@ public class ClusterImpl implements Cluster {
 
   @Override
   public Service addService(String serviceName) throws AmbariException {
-    loadServices();
     clusterGlobalLock.writeLock().lock();
     try {
       if (LOG.isDebugEnabled()) {
@@ -1010,7 +1009,6 @@ public class ClusterImpl implements Cluster {
 
   @Override
   public Service getService(String serviceName) throws AmbariException {
-    loadServices();
     clusterGlobalLock.readLock().lock();
     try {
       if (!services.containsKey(serviceName)) {
@@ -1024,7 +1022,6 @@ public class ClusterImpl implements Cluster {
 
   @Override
   public Map<String, Service> getServices() {
-    loadServices();
     clusterGlobalLock.readLock().lock();
     try {
       return new HashMap<String, Service>(services);
@@ -2129,7 +2126,6 @@ public class ClusterImpl implements Cluster {
 
   @Override
   public void debugDump(StringBuilder sb) {
-    loadServices();
     loadStackVersion();
     clusterGlobalLock.readLock().lock();
     try {
@@ -2168,7 +2164,6 @@ public class ClusterImpl implements Cluster {
   @Override
   @Transactional
   public void deleteAllServices() throws AmbariException {
-    loadServices();
     clusterGlobalLock.writeLock().lock();
     try {
       LOG.info("Deleting all services for cluster" + ", clusterName="
@@ -2194,7 +2189,6 @@ public class ClusterImpl implements Cluster {
   @Override
   public void deleteService(String serviceName)
     throws AmbariException {
-    loadServices();
     clusterGlobalLock.writeLock().lock();
     try {
       Service service = getService(serviceName);
@@ -2243,7 +2237,6 @@ public class ClusterImpl implements Cluster {
 
   @Override
   public boolean canBeRemoved() {
-    loadServices();
     clusterGlobalLock.readLock().lock();
     try {
       boolean safeToRemove = true;
@@ -3559,6 +3552,8 @@ public class ClusterImpl implements Cluster {
 
       refresh();
 
+      loadServices();
+
     } finally {
       clusterGlobalLock.writeLock().unlock();
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java 
b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
index a3d05a9..ce86f83 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
@@ -382,7 +382,6 @@ public class EventsTest {
   private void installHdfsService() throws Exception {
     String serviceName = "HDFS";
     Service service = m_serviceFactory.createNew(m_cluster, serviceName);
-    m_cluster.addService(service);
     service.persist();
     service = m_cluster.getService(serviceName);
     Assert.assertNotNull(service);

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
index 19146fd..ea48703 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
@@ -415,7 +415,6 @@ public class OrmTestHelper {
       ServiceComponentHostFactory schFactory, String hostName) throws 
Exception {
     String serviceName = "HDFS";
     Service service = serviceFactory.createNew(cluster, serviceName);
-    cluster.addService(service);
     service.persist();
     service = cluster.getService(serviceName);
     assertNotNull(service);
@@ -461,7 +460,6 @@ public class OrmTestHelper {
       ServiceComponentHostFactory schFactory, String hostName) throws 
Exception {
     String serviceName = "YARN";
     Service service = serviceFactory.createNew(cluster, serviceName);
-    cluster.addService(service);
     service.persist();
     service = cluster.getService(serviceName);
     assertNotNull(service);

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
index d1b27a9..76aa2e4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
@@ -304,7 +304,6 @@ public class AlertEventPublisherTest {
   private void installHdfsService() throws Exception {
     String serviceName = "HDFS";
     Service service = serviceFactory.createNew(cluster, serviceName);
-    cluster.addService(service);
     service.persist();
     service = cluster.getService(serviceName);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/84c3e7f0/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
index 1875ba6..fc4803b 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
@@ -175,7 +175,6 @@ public class InitialAlertEventTest {
   private void installHdfsService() throws Exception {
     String serviceName = "HDFS";
     Service service = m_serviceFactory.createNew(m_cluster, serviceName);
-    m_cluster.addService(service);
     service.persist();
     service = m_cluster.getService(serviceName);
 

Reply via email to