Parcourir la source

Merging changes from the trunk to HDFS-1052 branch.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hdfs/branches/HDFS-1052@1004789 13f79535-47bb-0310-9956-ffa450edef68
Suresh Srinivas il y a 15 ans
Parent
commit
74003b7119

+ 5 - 1
CHANGES.txt

@@ -304,9 +304,13 @@ Trunk (unreleased changes)
     HDFS-1364. Makes long running HFTP-based applications do relogins
     if necessary. (Jitendra Pandey via ddas)
 
-    HDFS-1399.  Distinct minicluster services (e.g. NN and JT) overwrite each
+    HDFS-1399. Distinct minicluster services (e.g. NN and JT) overwrite each
     other's service policies.  (Aaron T. Myers via tomwhite)
 
+    HDFS-1440. Fix TestComputeInvalidateWork failure. (suresh)
+
+Release 0.21.0 - Unreleased
+
   INCOMPATIBLE CHANGES
 
     HDFS-538. Per the contract elucidated in HADOOP-6201, throw

+ 25 - 22
src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestComputeInvalidateWork.java

@@ -44,29 +44,32 @@ public class TestComputeInvalidateWork extends TestCase {
         namesystem.heartbeats.toArray(new DatanodeDescriptor[NUM_OF_DATANODES]);
       assertEquals(nodes.length, NUM_OF_DATANODES);
       
-      synchronized (namesystem) {
-      for (int i=0; i<nodes.length; i++) {
-        for(int j=0; j<3*namesystem.blockInvalidateLimit+1; j++) {
-          Block block = new Block(i*(namesystem.blockInvalidateLimit+1)+j, 0, 
-              GenerationStamp.FIRST_VALID_STAMP);
-          namesystem.blockManager.addToInvalidates(block, nodes[i]);
+      namesystem.writeLock();
+      try {
+        for (int i=0; i<nodes.length; i++) {
+          for(int j=0; j<3*namesystem.blockInvalidateLimit+1; j++) {
+            Block block = new Block(i*(namesystem.blockInvalidateLimit+1)+j, 0, 
+                GenerationStamp.FIRST_VALID_STAMP);
+            namesystem.blockManager.addToInvalidates(block, nodes[i]);
+          }
         }
-      }
-      
-      assertEquals(namesystem.blockInvalidateLimit*NUM_OF_DATANODES, 
-          namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES+1));
-      assertEquals(namesystem.blockInvalidateLimit*NUM_OF_DATANODES, 
-          namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES));
-      assertEquals(namesystem.blockInvalidateLimit*(NUM_OF_DATANODES-1), 
-          namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES-1));
-      int workCount = namesystem.blockManager.computeInvalidateWork(1);
-      if (workCount == 1) {
-        assertEquals(namesystem.blockInvalidateLimit+1, 
-            namesystem.blockManager.computeInvalidateWork(2));
-      } else {
-        assertEquals(workCount, namesystem.blockInvalidateLimit);
-        assertEquals(2, namesystem.blockManager.computeInvalidateWork(2));
-      }
+        
+        assertEquals(namesystem.blockInvalidateLimit*NUM_OF_DATANODES, 
+            namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES+1));
+        assertEquals(namesystem.blockInvalidateLimit*NUM_OF_DATANODES, 
+            namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES));
+        assertEquals(namesystem.blockInvalidateLimit*(NUM_OF_DATANODES-1), 
+            namesystem.blockManager.computeInvalidateWork(NUM_OF_DATANODES-1));
+        int workCount = namesystem.blockManager.computeInvalidateWork(1);
+        if (workCount == 1) {
+          assertEquals(namesystem.blockInvalidateLimit+1, 
+              namesystem.blockManager.computeInvalidateWork(2));
+        } else {
+          assertEquals(workCount, namesystem.blockInvalidateLimit);
+          assertEquals(2, namesystem.blockManager.computeInvalidateWork(2));
+        }
+      } finally {
+        namesystem.writeUnlock();
       }
     } finally {
       cluster.shutdown();