Repository: ambari
Updated Branches:
  refs/heads/trunk 88758cce9 -> 94bbf6404


AMBARI-5564. VersionUtils doesn't trim input strings. SchemaUpgradeHelper 
should log unexpected exceptions. (mpapirkovskyy)


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

Branch: refs/heads/trunk
Commit: 94bbf6404a0519b1c015c1dc7b3d38823a82b72a
Parents: 88758cc
Author: Myroslav Papirkovskyy <[email protected]>
Authored: Thu Apr 24 21:07:07 2014 +0300
Committer: Myroslav Papirkovskyy <[email protected]>
Committed: Thu Apr 24 21:07:07 2014 +0300

----------------------------------------------------------------------
 .../server/upgrade/SchemaUpgradeHelper.java     | 57 ++++++++++----------
 .../ambari/server/utils/VersionUtils.java       |  8 ++-
 .../ambari/server/utils/TestVersionUtils.java   |  1 +
 3 files changed, 34 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/94bbf640/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
index f58d8d2..d04dc26 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
@@ -102,7 +102,7 @@ public class SchemaUpgradeHelper {
   protected String getAmbariServerVersion() {
     String versionFilePath = configuration.getServerVersionFilePath();
     try {
-      return FileUtils.readFileToString(new File(versionFilePath));
+      return FileUtils.readFileToString(new File(versionFilePath)).trim();
     } catch (IOException e) {
       e.printStackTrace();
     }
@@ -174,12 +174,6 @@ public class SchemaUpgradeHelper {
       for (UpgradeCatalog upgradeCatalog : upgradeCatalogs) {
         try {
           upgradeCatalog.upgradeSchema();
-        } catch (AmbariException e) {
-          LOG.error("Upgrade failed. ", e);
-          throw e;
-        } catch (SQLException e) {
-          LOG.error("Upgrade failed. ", e);
-          throw new AmbariException(e.getMessage(), e);
         } catch (Exception e) {
           LOG.error("Upgrade failed. ", e);
           throw new AmbariException(e.getMessage(), e);
@@ -195,12 +189,6 @@ public class SchemaUpgradeHelper {
       for (UpgradeCatalog upgradeCatalog : upgradeCatalogs) {
         try {
           upgradeCatalog.upgradeData();
-        } catch (AmbariException e) {
-          LOG.error("Upgrade failed. ", e);
-          throw e;
-        } catch (SQLException e) {
-          LOG.error("Upgrade failed. ", e);
-          throw new AmbariException(e.getMessage());
         } catch (Exception e) {
           LOG.error("Upgrade failed. ", e);
           throw new AmbariException(e.getMessage(), e);
@@ -215,32 +203,41 @@ public class SchemaUpgradeHelper {
    * @param args args[0] = target version to upgrade to.
    */
   public static void main(String[] args) throws Exception {
-    Injector injector = Guice.createInjector(new UpgradeHelperModule());
-    SchemaUpgradeHelper schemaUpgradeHelper = 
injector.getInstance(SchemaUpgradeHelper.class);
+    try {
+      Injector injector = Guice.createInjector(new UpgradeHelperModule());
+      SchemaUpgradeHelper schemaUpgradeHelper = 
injector.getInstance(SchemaUpgradeHelper.class);
 
-    String targetVersion = schemaUpgradeHelper.getAmbariServerVersion();
-    LOG.info("Upgrading schema to target version = " + targetVersion);
+      String targetVersion = schemaUpgradeHelper.getAmbariServerVersion();
+      LOG.info("Upgrading schema to target version = " + targetVersion);
 
-    UpgradeCatalog targetUpgradeCatalog = AbstractUpgradeCatalog
-      .getUpgradeCatalog(targetVersion);
+      UpgradeCatalog targetUpgradeCatalog = AbstractUpgradeCatalog
+        .getUpgradeCatalog(targetVersion);
 
-    LOG.debug("Target upgrade catalog. " + targetUpgradeCatalog);
+      LOG.debug("Target upgrade catalog. " + targetUpgradeCatalog);
 
-    // Read source version from DB
-    String sourceVersion = schemaUpgradeHelper.readSourceVersion();
-    LOG.info("Upgrading schema from source version = " + sourceVersion);
+      // Read source version from DB
+      String sourceVersion = schemaUpgradeHelper.readSourceVersion();
+      LOG.info("Upgrading schema from source version = " + sourceVersion);
 
-    List<UpgradeCatalog> upgradeCatalogs =
-      schemaUpgradeHelper.getUpgradePath(sourceVersion, targetVersion);
+      List<UpgradeCatalog> upgradeCatalogs =
+        schemaUpgradeHelper.getUpgradePath(sourceVersion, targetVersion);
 
-    schemaUpgradeHelper.executeUpgrade(upgradeCatalogs);
+      schemaUpgradeHelper.executeUpgrade(upgradeCatalogs);
 
-    schemaUpgradeHelper.startPersistenceService();
+      schemaUpgradeHelper.startPersistenceService();
 
-    schemaUpgradeHelper.executeDMLUpdates(upgradeCatalogs);
+      schemaUpgradeHelper.executeDMLUpdates(upgradeCatalogs);
 
-    LOG.info("Upgrade successful.");
+      LOG.info("Upgrade successful.");
 
-    schemaUpgradeHelper.stopPersistenceService();
+      schemaUpgradeHelper.stopPersistenceService();
+    } catch (Throwable e) {
+      if (e instanceof AmbariException) {
+        throw (AmbariException)e;
+      }else{
+        LOG.error("Unexpected error, upgrade failed", e);
+        throw new Exception("Unexpected error, upgrade failed", e);
+      }
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/94bbf640/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java 
b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
index 9e3c0c8..a327292 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
@@ -18,6 +18,7 @@
 package org.apache.ambari.server.utils;
 
 import org.apache.ambari.server.bootstrap.BootStrapImpl;
+import org.apache.commons.lang.StringUtils;
 
 /**
  * Provides various utility functions to be used for version handling.
@@ -36,6 +37,9 @@ public class VersionUtils {
    */
   public static int compareVersions(String version1, String version2, int 
maxLengthToCompare)
     throws IllegalArgumentException {
+    version1 = StringUtils.trim(version1);
+    version2 = StringUtils.trim(version2);
+
     if (version1 == null || version1.isEmpty()) {
       throw new IllegalArgumentException("version1 cannot be null or empty");
     }
@@ -46,9 +50,9 @@ public class VersionUtils {
       throw new IllegalArgumentException("maxLengthToCompare cannot be less 
than 0");
     }
 
-    
+
     if(BootStrapImpl.DEV_VERSION.equals(version1.trim())) return 0;
-    
+
     String[] version1Parts = version1.split("\\.");
     String[] version2Parts = version2.split("\\.");
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/94bbf640/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
index 19d2af4..7a3266e 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
@@ -63,6 +63,7 @@ public class TestVersionUtils {
     Assert.assertEquals(0, VersionUtils.compareVersions("1.2.3", "1.2.3.4", 
3));
     Assert.assertEquals(0, VersionUtils.compareVersions("1.2.3.6.7", 
"1.2.3.4", 3));
     Assert.assertEquals(1, VersionUtils.compareVersions("1.2.3.6.7", 
"1.2.3.4", 4));
+    Assert.assertEquals(1, VersionUtils.compareVersions("1.2.3.6.7\n", 
"1.2.3.4\n", 4)); //test version trimming
 
     Assert.assertEquals(1, VersionUtils.compareVersions("1.2.3.1", "1.2.3", 
true));
     Assert.assertEquals(1, VersionUtils.compareVersions("2.1.3", "1.2.3", 
true));

Reply via email to