Repository: ambari
Updated Branches:
  refs/heads/branch-2.4 764c951a1 -> 196455948
  refs/heads/trunk 6119a6457 -> 4020d34dc


AMBARI-16964. Upgrade Catalog 2.4 is not idempotent (aonishuk)


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

Branch: refs/heads/trunk
Commit: 4020d34dc10658d197a42ad21fc3667aed2dee90
Parents: 6119a64
Author: Andrew Onishuk <[email protected]>
Authored: Tue May 31 16:43:41 2016 +0300
Committer: Andrew Onishuk <[email protected]>
Committed: Tue May 31 16:43:41 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ambari/server/upgrade/UpgradeCatalog240.java  | 8 ++++++++
 .../apache/ambari/server/upgrade/UpgradeCatalog240Test.java  | 3 ++-
 2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4020d34d/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
index 554c021..7226859 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog240.java
@@ -2336,6 +2336,14 @@ public class UpgradeCatalog240 extends 
AbstractUpgradeCatalog {
    */
   @Transactional
   private void updateViewInstanceTable() throws SQLException {
+    try {
+      if (Long.class.equals(dbAccessor.getColumnClass(VIEWINSTANCE_TABLE, 
CLUSTER_HANDLE_COLUMN))) {
+        LOG.info(String.format("%s column is already numeric. Skipping an 
update of %s table.", CLUSTER_HANDLE_COLUMN, VIEWINSTANCE_TABLE));
+        return;
+      }
+    } catch (ClassNotFoundException e) {
+      LOG.warn("Cannot determine a type of " + CLUSTER_HANDLE_COLUMN + " 
column.");
+    }
 
     String cluster_handle_dummy = "cluster_handle_dummy";
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/4020d34d/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
index 422e1fb..9b1c16c 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog240Test.java
@@ -148,7 +148,7 @@ public class UpgradeCatalog240Test {
   }
 
   @Test
-  public void testExecuteDDLUpdates() throws SQLException, AmbariException {
+  public void testExecuteDDLUpdates() throws SQLException, AmbariException, 
ClassNotFoundException {
     Capture<DBAccessor.DBColumnInfo> capturedSortOrderColumnInfo = 
newCapture();
     Capture<DBAccessor.DBColumnInfo> capturedPermissionIDColumnInfo = 
newCapture();
     Capture<DBAccessor.DBColumnInfo> capturedScColumnInfo = newCapture();
@@ -275,6 +275,7 @@ public class UpgradeCatalog240Test {
     expect(connection.createStatement()).andReturn(statement);
 
     // Test viewInstance update
+    expect(dbAccessor.getColumnClass(UpgradeCatalog240.VIEWINSTANCE_TABLE, 
UpgradeCatalog240.CLUSTER_HANDLE_COLUMN)).andReturn(String.class);
     dbAccessor.addColumn(eq(UpgradeCatalog240.VIEWINSTANCE_TABLE), 
anyObject(DBAccessor.DBColumnInfo.class));
 
     expect(dbAccessor.getConnection()).andReturn(connection);

Reply via email to