Repository: ambari
Updated Branches:
  refs/heads/trunk c088e59eb -> dfb978551


AMBARI-22723. Ambari Upgrade failed in case if database have no cluster_version 
table already. The issue with idempotence (dlysnichenko)


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

Branch: refs/heads/trunk
Commit: dfb97855196ff3e40ae4b6742eabe31082560fe6
Parents: c088e59
Author: Lisnichenko Dmitro <[email protected]>
Authored: Thu Jan 4 18:36:34 2018 +0200
Committer: Lisnichenko Dmitro <[email protected]>
Committed: Thu Jan 4 18:36:34 2018 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/ambari/server/orm/DBAccessorImpl.java    | 3 +++
 .../java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java  | 3 +++
 .../org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java   | 1 +
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/dfb97855/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index d36367d..3a42342 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -1449,6 +1449,9 @@ public class DBAccessorImpl implements DBAccessor {
   public List<Integer> getIntColumnValues(String tableName, String columnName, 
String[] ConditionColumnNames,
                                           String[] values, boolean 
ignoreFailure) throws SQLException {
 
+    if (!tableExists(tableName)) {
+      throw new IllegalArgumentException(String.format("%s table does not 
exist", tableName));
+    }
     if (!tableHasColumn(tableName, columnName)) {
       throw new IllegalArgumentException(String.format("%s table does not 
contain %s column", tableName, columnName));
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/dfb97855/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
index 11b765c..6bcf8a9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -531,6 +531,9 @@ public class UpgradeCatalog260 extends 
AbstractUpgradeCatalog {
    * @throws SQLException
    */
   public Integer getCurrentVersionID() throws AmbariException, SQLException {
+    if (!dbAccessor.tableExists(CLUSTER_VERSION_TABLE)) {
+      return null;
+    }
     List<Integer> currentVersionList = 
dbAccessor.getIntColumnValues(CLUSTER_VERSION_TABLE, REPO_VERSION_ID_COLUMN,
         new String[]{STATE_COLUMN}, new String[]{CURRENT}, false);
     if (currentVersionList.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/dfb97855/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index c88d1a1..90fb029 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -517,6 +517,7 @@ public class UpgradeCatalog260Test {
   }
 
   public void expectGetCurrentVersionID(List<Integer> current, 
Capture<String[]> scdcaptureKey, Capture<String[]> scdcaptureValue) throws 
SQLException {
+    
expect(dbAccessor.tableExists(eq("cluster_version"))).andReturn(true).once();
     expect(dbAccessor.getIntColumnValues(eq("cluster_version"), 
eq("repo_version_id"),
         capture(scdcaptureKey), capture(scdcaptureValue), 
eq(false))).andReturn(current).once();
   }

Reply via email to