HDFS-7072. Fix TestBlockManager and TestStorageMover.  Contributed by Jing Zhao


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

Branch: refs/heads/trunk
Commit: bd2e409de128dcf4143f69c1d572e03a51511517
Parents: 432b863
Author: Tsz-Wo Nicholas Sze <szets...@hortonworks.com>
Authored: Wed Sep 17 13:48:32 2014 +0800
Committer: Tsz-Wo Nicholas Sze <szets...@hortonworks.com>
Committed: Wed Sep 17 13:48:32 2014 +0800

----------------------------------------------------------------------
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt       |  3 +++
 .../blockmanagement/DatanodeStorageInfo.java      |  2 +-
 .../server/blockmanagement/TestBlockManager.java  |  1 +
 .../hdfs/server/mover/TestStorageMover.java       | 18 ++++++++++++++++++
 4 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/bd2e409d/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt 
b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 7584582..59a130e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -23,6 +23,9 @@ HDFS-6584: Archival Storage
     HDFS-6847. Support storage policy on directories and include storage 
policy 
     in HdfsFileStatus.  (Jing Zhao via szetszwo)
 
+    HDFS-7072. Fix TestBlockManager and TestStorageMover.  (Jing Zhao
+    via szetszwo)
+
 Trunk (Unreleased)
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/bd2e409d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
index c363f4b..58ca2ac 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
@@ -109,7 +109,7 @@ public class DatanodeStorageInfo {
 
   private long capacity;
   private long dfsUsed;
-  private long remaining;
+  private volatile long remaining;
   private long blockPoolUsed;
 
   private volatile BlockInfo blockList = null;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/bd2e409d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java
index 9b980dc..7c0623c 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java
@@ -666,6 +666,7 @@ public class TestBlockManager {
     excessTypes.add(StorageType.DEFAULT);
     Assert.assertTrue(BlockManager.useDelHint(true, delHint, null,
         moreThan1Racks, excessTypes));
+    excessTypes.remove(0);
     excessTypes.add(StorageType.SSD);
     Assert.assertFalse(BlockManager.useDelHint(true, delHint, null,
         moreThan1Racks, excessTypes));

http://git-wip-us.apache.org/repos/asf/hadoop/blob/bd2e409d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/mover/TestStorageMover.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/mover/TestStorageMover.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/mover/TestStorageMover.java
index ceedfc2..eeea62b 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/mover/TestStorageMover.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/mover/TestStorageMover.java
@@ -588,6 +588,20 @@ public class TestStorageMover {
     }
   }
 
+  private void waitForAllReplicas(int expectedReplicaNum, Path file,
+      DistributedFileSystem dfs) throws Exception {
+    for (int i = 0; i < 5; i++) {
+      LocatedBlocks lbs = dfs.getClient().getLocatedBlocks(file.toString(), 0,
+          BLOCK_SIZE);
+      LocatedBlock lb = lbs.get(0);
+      if (lb.getLocations().length >= expectedReplicaNum) {
+        return;
+      } else {
+        Thread.sleep(1000);
+      }
+    }
+  }
+
   /**
    * Test DISK is running out of spaces.
    */
@@ -618,6 +632,7 @@ public class TestStorageMover {
           for (; ; hotFileCount++) {
             final Path p = new Path(pathPolicyMap.hot, "file" + hotFileCount);
             DFSTestUtil.createFile(test.dfs, p, BLOCK_SIZE, replication, 0L);
+            waitForAllReplicas(replication, p, test.dfs);
           }
         } catch (IOException e) {
           LOG.info("Expected: hotFileCount=" + hotFileCount, e);
@@ -632,6 +647,7 @@ public class TestStorageMover {
           for (; ; hotFileCount_r1++) {
             final Path p = new Path(pathPolicyMap.hot, "file_r1_" + 
hotFileCount_r1);
             DFSTestUtil.createFile(test.dfs, p, BLOCK_SIZE, (short) 1, 0L);
+            waitForAllReplicas(1, p, test.dfs);
           }
         } catch (IOException e) {
           LOG.info("Expected: hotFileCount_r1=" + hotFileCount_r1, e);
@@ -699,6 +715,7 @@ public class TestStorageMover {
           for (; ; coldFileCount++) {
             final Path p = new Path(pathPolicyMap.cold, "file" + 
coldFileCount);
             DFSTestUtil.createFile(test.dfs, p, BLOCK_SIZE, replication, 0L);
+            waitForAllReplicas(replication, p, test.dfs);
           }
         } catch (IOException e) {
           LOG.info("Expected: coldFileCount=" + coldFileCount, e);
@@ -713,6 +730,7 @@ public class TestStorageMover {
           for (; ; coldFileCount_r1++) {
             final Path p = new Path(pathPolicyMap.cold, "file_r1_" + 
coldFileCount_r1);
             DFSTestUtil.createFile(test.dfs, p, BLOCK_SIZE, (short) 1, 0L);
+            waitForAllReplicas(1, p, test.dfs);
           }
         } catch (IOException e) {
           LOG.info("Expected: coldFileCount_r1=" + coldFileCount_r1, e);

Reply via email to