Ver código fonte

AMBARI-5622. 'Upgrading schema' failed during upgrading to 1.6.0. (mpapirkovskyy)

Myroslav Papirkovskyy 11 anos atrás
pai
commit
6b11e6d4b3

+ 7 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java

@@ -31,6 +31,13 @@ import java.util.List;
  */
 public interface DBAccessor {
 
+  /**
+   * Wraps object name with dbms-specific quotes
+   * @param name object name without quotes
+   * @return quoted name
+   */
+  String quoteObjectName(String name);
+
   /**
    * Create new table
    * @param tableName

+ 7 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java

@@ -103,6 +103,11 @@ public class DBAccessorImpl implements DBAccessor {
     return connection;
   }
 
+  @Override
+  public String quoteObjectName(String name) {
+    return dbmsHelper.quoteObjectName(name);
+  }
+
   @Override
   public void createTable(String tableName, List<DBColumnInfo> columnInfo,
                           String... primaryKeyColumns) throws SQLException {
@@ -136,6 +141,8 @@ public class DBAccessorImpl implements DBAccessor {
     return objectName;
   }
 
+
+
   @Override
   public boolean tableExists(String tableName) throws SQLException {
     boolean result = false;

+ 2 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java

@@ -30,6 +30,8 @@ public interface DbmsHelper {
    */
   boolean supportsColumnTypeChange();
 
+  String quoteObjectName(String name);
+
   /**
    * Generate rename column statement
    * @param tableName

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java

@@ -44,6 +44,11 @@ public class GenericDbmsHelper implements DbmsHelper {
     return false;
   }
 
+  @Override
+  public String quoteObjectName(String name) {
+    return "\"" + name + "\"";
+  }
+
   @Override
   public String getRenameColumnStatement(String tableName, String oldName, DBAccessor.DBColumnInfo columnInfo) {
     StringBuilder stringBuilder = new StringBuilder();

+ 5 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java

@@ -31,6 +31,11 @@ public class MySqlHelper extends GenericDbmsHelper {
     return true;
   }
 
+  @Override
+  public String quoteObjectName(String name) {
+    return "`" + name + "`";
+  }
+
   @Override
   public StringBuilder writeColumnRenameString(StringBuilder builder, String oldName, DBAccessor.DBColumnInfo newColumnInfo) {
 

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

@@ -73,7 +73,8 @@ public class SchemaUpgradeHelper {
 
     ResultSet resultSet = null;
     try {
-      resultSet = dbAccessor.executeSelect("SELECT \"metainfo_value\" from metainfo WHERE \"metainfo_key\"='version'");
+      resultSet = dbAccessor.executeSelect("SELECT " + dbAccessor.quoteObjectName("metainfo_value") +
+          " from metainfo WHERE " + dbAccessor.quoteObjectName("metainfo_key") + "='version'");
       if (resultSet.next()) {
         return resultSet.getString(1);
       } else {
@@ -201,8 +202,9 @@ public class SchemaUpgradeHelper {
   public void resetUIState() throws AmbariException {
     LOG.info("Resetting UI state.");
     try {
-      dbAccessor.updateTable("key_value_store", "\"value\"", "{\"clusterState\":\"CLUSTER_STARTED_5\"}",
-          "where \"key\"='CLUSTER_CURRENT_STATUS'");
+      dbAccessor.updateTable("key_value_store", dbAccessor.quoteObjectName("value"),
+          "{\"clusterState\":\"CLUSTER_STARTED_5\"}",
+          "where " + dbAccessor.quoteObjectName("key") + "='CLUSTER_CURRENT_STATUS'");
     } catch (SQLException e) {
       throw new AmbariException("Unable to reset UI state", e);
     }
@@ -246,6 +248,7 @@ public class SchemaUpgradeHelper {
       schemaUpgradeHelper.stopPersistenceService();
     } catch (Throwable e) {
       if (e instanceof AmbariException) {
+        LOG.error("Exception occured during upgrade, failed", e);
         throw (AmbariException)e;
       }else{
         LOG.error("Unexpected error, upgrade failed", e);

+ 0 - 2
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog151.java

@@ -122,8 +122,6 @@ public class UpgradeCatalog151 extends AbstractUpgradeCatalog {
     dbAccessor.addFKConstraint("viewinstancedata", "FK_viewinstdata_view_name",
         new String[]{"view_name", "view_instance_name"}, "viewinstance", new String[]{"view_name", "name"}, true);
 
-    dbAccessor.addFKConstraint("hostgroup_configuration", "FK_hg_config_blueprint_name", "blueprint_name", "hostgroup", "blueprint_name", true);
-    dbAccessor.addFKConstraint("hostgroup_configuration", "FK_hg_config_hostgroup_name", "hostgroup_name", "hostgroup", "name", true);
   }