浏览代码

AMBARI-12287. Schema version of Ambari updated before actual end of DML queries (if a problem is encountered during upgrade, fixing issues and running it again did not drop obsolete columns).(vbrodetskyi)

Vitaly Brodetskyi 10 年之前
父节点
当前提交
84b21baff8

+ 11 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java

@@ -58,4 +58,15 @@ public class DerbyHelper extends GenericDbmsHelper {
     builder.append(nullStatement);
     return builder;
   }
+
+  @Override
+  public String writeGetTableConstraints(String databaseName, String tableName){
+    StringBuilder statement = new StringBuilder()
+      .append("SELECT")
+        .append(" C.CONSTRAINTNAME AS CONSTRAINT_NAME,")
+        .append(" C.TYPE AS CONSTRAINT_TYPE")
+      .append(" FROM SYS.SYSCONSTRAINTS AS C, SYS.SYSTABLES AS T")
+      .append(" WHERE C.TABLEID = T.TABLEID AND T.TABLENAME = '").append(tableName).append("'");
+    return statement.toString();
+  }
 }

+ 4 - 0
ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java

@@ -532,6 +532,10 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
   @Override
   public void upgradeData() throws AmbariException, SQLException {
     executeDMLUpdates();
+  }
+
+  @Override
+  public final void updateDatabaseSchemaVersion() {
     updateMetaInfoVersion(getTargetVersion());
   }
 

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java

@@ -234,7 +234,7 @@ public class SchemaUpgradeHelper {
       for (UpgradeCatalog upgradeCatalog : upgradeCatalogs) {
         try {
           upgradeCatalog.onPostUpgrade();
-          ;
+          upgradeCatalog.updateDatabaseSchemaVersion();
         } catch (Exception e) {
           LOG.error("Upgrade failed. ", e);
           throw new AmbariException(e.getMessage(), e);

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog.java

@@ -76,4 +76,9 @@ public interface UpgradeCatalog {
    * @return null : default
    */
   String getSourceVersion();
+
+  /**
+   * Update schema version in the database to the Target one
+   */
+  void updateDatabaseSchemaVersion();
 }

+ 1 - 0
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java

@@ -1513,6 +1513,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
     }
   }
 
+
   /**
    * Adds non NULL constraints and drops outdated columns no longer needed after
    * the column data migration.

+ 2 - 0
ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java

@@ -224,6 +224,8 @@ public class UpgradeTest {
 
     schemaUpgradeHelper.executeDMLUpdates(upgradeCatalogs);
 
+    schemaUpgradeHelper.executeOnPostUpgrade(upgradeCatalogs);
+
     LOG.info("Upgrade successful.");
 
     schemaUpgradeHelper.stopPersistenceService();