Repository: ambari
Updated Branches:
  refs/heads/branch-2.4 154870f3a -> 20d488742


AMBARI-18467. Ambari server does not come up after restart if cluster install 
fails. (Balazs Bence Sari via stoader)


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

Branch: refs/heads/branch-2.4
Commit: 20d4887429277e9d2d95429dbb9d61c8dd249a04
Parents: 154870f
Author: Balazs Bence Sari <bs...@hortonworks.com>
Authored: Wed Sep 28 13:42:59 2016 +0200
Committer: Toader, Sebastian <stoa...@hortonworks.com>
Committed: Wed Sep 28 13:45:41 2016 +0200

----------------------------------------------------------------------
 .../stack/UpdateActiveRepoVersionOnStartup.java |  9 +++++--
 .../UpdateActiveRepoVersionOnStartupTest.java   | 28 +++++++++++++-------
 2 files changed, 26 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/20d48874/ambari-server/src/main/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartup.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartup.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartup.java
index 1413c66..8a32a42 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartup.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartup.java
@@ -94,9 +94,14 @@ public class UpdateActiveRepoVersionOnStartup {
         LOG.info("Updating existing repo versions for cluster {} on stack 
{}-{}",
             cluster.getClusterName(), stack.getName(), stack.getVersion());
         ClusterVersionEntity clusterVersion = 
clusterVersionDao.findByClusterAndStateCurrent(cluster.getClusterName());
+        if (null != clusterVersion) {
           RepositoryVersionEntity repoVersion = 
clusterVersion.getRepositoryVersion();
-        updateRepoVersion(stack, repoVersion);
-        repositoryVersionDao.merge(repoVersion);
+          updateRepoVersion(stack, repoVersion);
+          repositoryVersionDao.merge(repoVersion);
+        }
+        else {
+          LOG.warn("Missing cluster version for cluster {}", 
cluster.getClusterName());
+        }
       }
     }
     catch(Exception ex) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/20d48874/ambari-server/src/test/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest.java
index 9c54a88..24ab0e8 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest.java
@@ -37,7 +37,6 @@ import org.apache.ambari.server.state.RepositoryInfo;
 import org.apache.ambari.server.state.StackInfo;
 import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.base.Charsets;
@@ -61,10 +60,17 @@ public class UpdateActiveRepoVersionOnStartupTest {
 
   @Test
   public void addAServiceRepoToExistingRepoVersion() throws Exception {
+    init(true);
     activeRepoUpdater.process();
     verifyRepoIsAdded();
   }
 
+  @Test
+  public void missingClusterVersionShouldNotCauseException() throws Exception {
+    init(false);
+    activeRepoUpdater.process();
+  }
+
   /**
    * Verifies if the add-on service repo is added to the repo version entity, 
both json and xml representations.
    *
@@ -84,8 +90,7 @@ public class UpdateActiveRepoVersionOnStartupTest {
     Assert.assertTrue(ADD_ON_REPO_ID + " is add-on repo was not added to JSON 
representation", serviceRepoAddedToJson);
   }
 
-  @Before
-  public void init() throws Exception {
+  public void init(boolean addClusterVersion) throws Exception {
     ClusterDAO clusterDao = mock(ClusterDAO.class);
     ClusterVersionDAO clusterVersionDAO = mock(ClusterVersionDAO.class);
     repositoryVersionDao = mock(RepositoryVersionDAO.class);
@@ -125,17 +130,22 @@ public class UpdateActiveRepoVersionOnStartupTest {
       }
     };
     Injector injector = Guice.createInjector(testModule);
-    repoVersion = new RepositoryVersionEntity();
-    repoVersion.setStack(stackEntity);
-    
repoVersion.setOperatingSystems(resourceAsString("org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest_initialRepos.json"));
-    ClusterVersionEntity clusterVersion = new ClusterVersionEntity();
-    clusterVersion.setRepositoryVersion(repoVersion);
-    
when(clusterVersionDAO.findByClusterAndStateCurrent(CLUSTER_NAME)).thenReturn(clusterVersion);
+    if (addClusterVersion) {
+      repoVersion = new RepositoryVersionEntity();
+      repoVersion.setStack(stackEntity);
+      
repoVersion.setOperatingSystems(resourceAsString("org/apache/ambari/server/stack/UpdateActiveRepoVersionOnStartupTest_initialRepos.json"));
+      ClusterVersionEntity clusterVersion = new ClusterVersionEntity();
+      clusterVersion.setRepositoryVersion(repoVersion);
+      
when(clusterVersionDAO.findByClusterAndStateCurrent(CLUSTER_NAME)).thenReturn(clusterVersion);
+
+    }
 
     activeRepoUpdater = new UpdateActiveRepoVersionOnStartup(clusterDao,
         clusterVersionDAO, repositoryVersionDao, repositoryVersionHelper, 
metaInfo);
   }
 
+
+
   private static String resourceAsString(String resourceName) throws 
IOException {
     return Resources.toString(Resources.getResource(resourceName), 
Charsets.UTF_8);
   }

Reply via email to