Repository: kylin
Updated Branches:
  refs/heads/master 1cd4ad8c1 -> 819e660ee


KYLIN-1889: Deal with the failure of renaming folder in hdfs when running the 
tool CubeMigrationCLI


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/819e660e
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/819e660e
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/819e660e

Branch: refs/heads/master
Commit: 819e660ee17361db92c20bfd28068a308334c7a7
Parents: 1cd4ad8
Author: Zhong <yangzh...@lm-shc-16501214.corp.ebay.com>
Authored: Wed Jul 20 10:48:21 2016 +0800
Committer: Zhong <yangzh...@lm-shc-16501214.corp.ebay.com>
Committed: Wed Jul 20 10:48:21 2016 +0800

----------------------------------------------------------------------
 .../kylin/storage/hbase/util/CubeMigrationCLI.java | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/819e660e/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/CubeMigrationCLI.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/CubeMigrationCLI.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/CubeMigrationCLI.java
index 2fffa52..c4cf579 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/CubeMigrationCLI.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/CubeMigrationCLI.java
@@ -414,7 +414,7 @@ public class CubeMigrationCLI {
         case RENAME_FOLDER_IN_HDFS: {
             String srcPath = (String) opt.params[0];
             String dstPath = (String) opt.params[1];
-            hdfsFS.rename(new Path(srcPath), new Path(dstPath));
+            renameHDFSPath(srcPath, dstPath);
             logger.info("HDFS Folder renamed from " + srcPath + " to " + 
dstPath);
             break;
         }
@@ -516,7 +516,7 @@ public class CubeMigrationCLI {
             String dstPath = (String) opt.params[0];
 
             if (hdfsFS.exists(new Path(srcPath)) && !hdfsFS.exists(new 
Path(dstPath))) {
-                hdfsFS.rename(new Path(srcPath), new Path(dstPath));
+                renameHDFSPath(srcPath, dstPath);
                 logger.info("HDFS Folder renamed from " + srcPath + " to " + 
dstPath);
             }
             break;
@@ -563,4 +563,17 @@ public class CubeMigrationCLI {
             }
         }
     }
+
+    private static void renameHDFSPath(String srcPath, String dstPath) throws 
IOException, InterruptedException {
+        int nRetry = 0;
+        int sleepTime = 5000;
+        while (!hdfsFS.rename(new Path(srcPath), new Path(dstPath))) {
+            ++nRetry;
+            if (nRetry > 3) {
+                throw new InterruptedException("Cannot rename folder " + 
srcPath + " to folder " + dstPath);
+            } else {
+                Thread.sleep(sleepTime * nRetry * nRetry);
+            }
+        }
+    }
 }

Reply via email to