ソースを参照

HDFS-9413. getContentSummary() on standby should throw StandbyException. (Brahma Reddy Battula via mingma)

(cherry picked from commit 02653add98f34deedc27f4da2254d25e83e55b58)
(cherry picked from commit 42b55ff23e5fa30e00a6b56df92777a1899a1952)

 Conflicts:
	hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

(cherry picked from commit 83200450f67c1fe2b17385ade23051d83c7354bf)

 Conflicts:
	hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
Ming Ma 9 年 前
コミット
1b0f277eae

+ 6 - 2
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -21,6 +21,9 @@ Release 2.7.3 - UNRELEASED
     HDFS-9383. TestByteArrayManager#testByteArrayManager fails.
     (szetszwo via kihwal)
 
+    HDFS-6481. DatanodeManager#getDatanodeStorageInfos() should check the
+    length of storageIDs. (szetszwo via Arpit Agarwal)
+
 Release 2.7.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES
@@ -113,8 +116,9 @@ Release 2.7.2 - UNRELEASED
     HDFS-9317. Document fsck -blockId and -storagepolicy options in branch-2.7.
     (aajisaka)
 
-    HDFS-6481. DatanodeManager#getDatanodeStorageInfos() should check the
-    length of storageIDs. (szetszwo via Arpit Agarwal)
+
+    HDFS-9413. getContentSummary() on standby should throw StandbyException.
+    (Brahma Reddy Battula via mingma)
 
 Release 2.7.1 - 2015-07-06
 

+ 2 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java

@@ -3920,9 +3920,11 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
    *         or null if file not found
    */
   ContentSummary getContentSummary(final String src) throws IOException {
+    checkOperation(OperationCategory.READ);
     readLock();
     boolean success = true;
     try {
+      checkOperation(OperationCategory.READ);
       return FSDirStatAndListingOp.getContentSummary(dir, src);
     } catch (AccessControlException ace) {
       success = false;

+ 15 - 0
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestQuotasWithHA.java

@@ -17,6 +17,7 @@
  */
 package org.apache.hadoop.hdfs.server.namenode.ha;
 
+
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
@@ -34,6 +35,7 @@ import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.hdfs.MiniDFSNNTopology;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.io.IOUtils;
+import org.apache.hadoop.ipc.StandbyException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -130,4 +132,17 @@ public class TestQuotasWithHA {
     assertEquals(1, cs.getDirectoryCount());
     assertEquals(0, cs.getFileCount());
   }
+
+  /**
+   * Test that getContentSummary on Standby should should throw standby
+   * exception.
+   */
+  @Test(expected = StandbyException.class)
+  public void testgetContentSummaryOnStandby() throws Exception {
+    Configuration nn1conf =cluster.getConfiguration(1);
+    // just reset the standby reads to default i.e False on standby.
+    HAUtil.setAllowStandbyReads(nn1conf, false);
+    cluster.restartNameNode(1);
+    cluster.getNameNodeRpc(1).getContentSummary("/");
+  }
 }