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);
