Browse Source

HDFS-14171. Performance improvement in Tailing EditLog. Contributed by Kenneth Yang.

(cherry picked from commit e9a005dfcf4d2249235aeff4da85b321dddc1ca9)
(cherry picked from commit c48640ffbd3852b75f898325ae0b3ea0ba864578)
(cherry picked from commit f24684ca9cd70326e24376a33cda937c98295af0)
(cherry picked from commit 054594c6145711c60f3cb848f08e515c4179f0c4)
(cherry picked from commit 10cc02f6436457ea88f6cd9a2cfb9894e53bd4c6)
Wei-Chiu Chuang 6 years ago
parent
commit
df2295c4c4

+ 6 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManagerSafeMode.java

@@ -541,7 +541,12 @@ class BlockManagerSafeMode {
    */
   private boolean areThresholdsMet() {
     assert namesystem.hasWriteLock();
-    int datanodeNum = blockManager.getDatanodeManager().getNumLiveDataNodes();
+    // Calculating the number of live datanodes is time-consuming
+    // in large clusters. Skip it when datanodeThreshold is zero.
+    int datanodeNum = 0;
+    if (datanodeThreshold > 0) {
+      datanodeNum = blockManager.getDatanodeManager().getNumLiveDataNodes();
+    }
     synchronized (this) {
       return blockSafe >= blockThreshold && datanodeNum >= datanodeThreshold;
     }