You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2015/01/22 23:16:47 UTC

[07/14] ambari git commit: AMBARI-9247. Wrong stack version of Service installed (ncole)

AMBARI-9247.  Wrong stack version of Service installed (ncole)


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

Branch: refs/heads/2.0-preview
Commit: 84bfe4334531fd049281ee869128a09cac06f6ee
Parents: 049b692
Author: Nate Cole <nc...@hortonworks.com>
Authored: Wed Jan 21 15:05:10 2015 -0500
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Wed Jan 21 14:16:22 2015 -0800

----------------------------------------------------------------------
 .../server/api/services/AmbariMetaInfo.java     |  8 ++--
 .../apache/ambari/server/stack/StackModule.java | 13 ++++---
 .../ambari/server/state/RepositoryInfo.java     | 27 ++++++++++---
 .../server/state/stack/LatestRepoCallable.java  |  3 +-
 .../server/api/services/AmbariMetaInfoTest.java | 18 ++++++++-
 .../server/upgrade/StackUpgradeUtilTest.java    | 40 ++++++++++----------
 6 files changed, 70 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index 1b7e2fe..897cf52 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@ -44,17 +44,17 @@ import org.apache.ambari.server.customactions.ActionDefinition;
 import org.apache.ambari.server.customactions.ActionDefinitionManager;
 import org.apache.ambari.server.events.AlertDefinitionRegistrationEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
+import org.apache.ambari.server.metadata.ActionMetadata;
 import org.apache.ambari.server.metadata.AgentAlertDefinitions;
 import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
-import org.apache.ambari.server.metadata.ActionMetadata;
 import org.apache.ambari.server.orm.dao.MetainfoDAO;
 import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
 import org.apache.ambari.server.orm.entities.MetainfoEntity;
 import org.apache.ambari.server.stack.StackContext;
 import org.apache.ambari.server.stack.StackDirectory;
+import org.apache.ambari.server.stack.StackManager;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.stack.StackManager;
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.DependencyInfo;
 import org.apache.ambari.server.state.OperatingSystemInfo;
@@ -766,10 +766,12 @@ public class AmbariMetaInfo {
       entity.setMetainfoName(metaKey);
       entity.setMetainfoValue(newBaseUrl);
 
-      if (null != ri.getDefaultBaseUrl() && newBaseUrl.equals(ri.getDefaultBaseUrl())) {
+      // !!! need a way to remove
+      if (newBaseUrl.equals("")) {
         metaInfoDAO.remove(entity);
       } else {
         metaInfoDAO.merge(entity);
+        ri.setBaseUrlFromSaved(true);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
index 933f187..8da2ff9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
@@ -18,6 +18,12 @@
 
 package org.apache.ambari.server.stack;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.state.RepositoryInfo;
@@ -29,12 +35,6 @@ import org.apache.ambari.server.state.stack.StackMetainfoXml;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 /**
  * Stack module which provides all functionality related to parsing and fully
  * resolving stacks from the stack definition.
@@ -561,6 +561,7 @@ public class StackModule extends BaseModule<StackModule, StackInfo> {
 
     if (null != updatedUrl) {
       ri.setBaseUrl(updatedUrl);
+      ri.setBaseUrlFromSaved(true);
     }
 
     if (LOG.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java
index 5347682..29776ed 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java
@@ -28,6 +28,7 @@ public class RepositoryInfo {
   private String mirrorsList;
   private String defaultBaseUrl;
   private String latestBaseUrl;
+  private boolean baseSaved = false;
 
   /**
    * @return the baseUrl
@@ -98,7 +99,7 @@ public class RepositoryInfo {
   public void setMirrorsList(String mirrorsList) {
     this.mirrorsList = mirrorsList;
   }
-  
+
   /**
    * @return the default base url
    */
@@ -119,14 +120,28 @@ public class RepositoryInfo {
   public String getLatestBaseUrl() {
     return latestBaseUrl;
   }
-  
+
   /**
    * @param url the latest determined base url
    */
   public void setLatestBaseUrl(String url) {
     latestBaseUrl = url;
-  }  
-  
+  }
+
+  /**
+   * @return if the base url was from a saved value
+   */
+  public boolean isBaseUrlFromSaved() {
+    return baseSaved;
+  }
+
+  /**
+   * Sets if the base url was from a saved value
+   */
+  public void setBaseUrlFromSaved(boolean saved) {
+    baseSaved = saved;
+  }
+
   @Override
   public String toString() {
     return "[ repoInfo: "
@@ -137,8 +152,8 @@ public class RepositoryInfo {
         + ", mirrorsList=" + mirrorsList
         + " ]";
   }
-  
-  
+
+
   public RepositoryResponse convertToResponse()
   {
     return new RepositoryResponse(getBaseUrl(), getOsType(), getRepoId(),

http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/main/java/org/apache/ambari/server/state/stack/LatestRepoCallable.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/LatestRepoCallable.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/LatestRepoCallable.java
index 608637c..373be33 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/LatestRepoCallable.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/LatestRepoCallable.java
@@ -126,8 +126,7 @@ public class LatestRepoCallable implements Callable<Void> {
               }
 
               ri.setLatestBaseUrl(baseUrl);
-              if (ri.getBaseUrl() != null
-                  && ri.getBaseUrl().equals(ri.getDefaultBaseUrl())) {
+              if (ri.getBaseUrl() != null && !ri.isBaseUrlFromSaved()) {
                 // Override baseUrl with the latestBaseUrl.
                 ri.setBaseUrl(baseUrl);
               }

http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
index 5579db3..c0ff4a6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
@@ -42,7 +42,6 @@ import java.util.Set;
 import javax.persistence.EntityManager;
 import javax.xml.bind.JAXBException;
 
-import com.google.gson.Gson;
 import junit.framework.Assert;
 
 import org.apache.ambari.server.AmbariException;
@@ -82,6 +81,8 @@ import org.apache.ambari.server.state.stack.MetricDefinition;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
+import org.easymock.Capture;
+import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -89,6 +90,7 @@ import org.junit.rules.TemporaryFolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.gson.Gson;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
@@ -116,7 +118,6 @@ public class AmbariMetaInfoTest {
   private static final String NON_EXT_VALUE = "XXX";
 
   private static final int REPOS_CNT = 3;
-  private static final int STACKS_NAMES_CNT = 2;
   private static final int PROPERTIES_CNT = 62;
   private static final int OS_CNT = 4;
 
@@ -272,9 +273,22 @@ public class AmbariMetaInfoTest {
       }
     }
 
+    Capture<MetainfoEntity> c = new Capture<MetainfoEntity>();
+
+    metainfoDAO = ambariMetaInfo.metaInfoDAO;
+    reset(metainfoDAO);
+    reset(entity);
+    expect(metainfoDAO.findByKey("repo:/HDP/2.1.1/redhat6/HDP-2.1.1:baseurl")).andReturn(entity).atLeastOnce();
+    expect(metainfoDAO.merge(EasyMock.capture(c))).andReturn(entity).atLeastOnce();
+    replay(metainfoDAO, entity);
+
     // Reset the database with the original baseUrl
     ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP, "2.1.1", "redhat6",
             HDP_REPO_ID, prevBaseUrl);
+
+    assertEquals(prevBaseUrl, c.getValue().getMetainfoValue());
+    assertTrue(repoInfo.isBaseUrlFromSaved());
+
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/84bfe433/ambari-server/src/test/java/org/apache/ambari/server/upgrade/StackUpgradeUtilTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/StackUpgradeUtilTest.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/StackUpgradeUtilTest.java
index 64de35d..35650a1 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/StackUpgradeUtilTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/StackUpgradeUtilTest.java
@@ -42,57 +42,57 @@ import com.google.inject.persist.PersistService;
 public class StackUpgradeUtilTest {
 
   private Injector injector;
-  
+
   @Before
   public void setup() throws Exception {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
   }
-  
+
   @After
   public void teardown() throws Exception {
     injector.getInstance(PersistService.class).stop();
   }
-  
+
   private void reset(String stackName, String stackVersion) throws Exception {
     AmbariMetaInfo ami = injector.getInstance(AmbariMetaInfo.class);
-    
+
     for (Entry<String, List<RepositoryInfo>> entry : ami.getRepository(stackName, stackVersion).entrySet()) {
       for (RepositoryInfo ri : entry.getValue()) {
         if (-1 == ri.getRepoId().indexOf("epel")) {
           ami.updateRepoBaseURL(stackName, stackVersion,
-              ri.getOsType(), ri.getRepoId(), ri.getDefaultBaseUrl());
+              ri.getOsType(), ri.getRepoId(), "");
         }
       }
     }
-    
+
   }
-  
+
   @Test
   public void testUpgradeStack() throws Exception {
     StackUpgradeUtil stackUpgradeUtil = injector.getInstance(StackUpgradeUtil.class);
-    
+
     String stackName = "HDP";
     String stackVersion = "1.3.0";
     String localRepoUrl = "http://foo.bar";
-    
+
     // check updating all
     stackUpgradeUtil.updateLocalRepo(stackName, stackVersion, localRepoUrl, null);
-    
+
     MetainfoDAO dao = injector.getInstance(MetainfoDAO.class);
-    
+
     Collection<MetainfoEntity> entities = dao.findAll();
     Assert.assertTrue(entities.size() > 0);
-    
+
     for (MetainfoEntity entity : entities) {
       Assert.assertTrue(entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/"));
       Assert.assertEquals(localRepoUrl, entity.getMetainfoValue());
     }
-    
+
     reset (stackName, stackVersion);
     entities = dao.findAll();
-    Assert.assertTrue(0 == entities.size());
-    
+    Assert.assertEquals(0, entities.size());
+
     // check updating only centos6
     stackUpgradeUtil.updateLocalRepo(stackName, stackVersion, localRepoUrl, "centos6");
 
@@ -106,7 +106,7 @@ public class StackUpgradeUtilTest {
     reset (stackName, stackVersion);
     entities = dao.findAll();
     Assert.assertTrue(0 == entities.size());
-    
+
     // check updating only centos6 and centos5
     stackUpgradeUtil.updateLocalRepo(stackName, stackVersion, localRepoUrl, "centos6,centos5");
 
@@ -118,7 +118,7 @@ public class StackUpgradeUtilTest {
           entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/centos5"));
       Assert.assertEquals(localRepoUrl, entity.getMetainfoValue());
     }
-    
+
     // verify that a change to centos6 also changes redhat6
     localRepoUrl = "http://newfoo.bar";
     stackUpgradeUtil.updateLocalRepo(stackName, stackVersion, localRepoUrl, "centos6");
@@ -138,8 +138,8 @@ public class StackUpgradeUtilTest {
     }
     Assert.assertTrue(foundCentos6);
     Assert.assertTrue(foundRedhat6);
-    
+
   }
-  
-  
+
+
 }