This is an automated email from the ASF dual-hosted git repository.

hexiaoqiao pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 37f9ccdc868c HDFS-17368. HA: Standby should exit safemode when 
resources are available. (#6518). Contributed by Zilong Zhu.
37f9ccdc868c is described below

commit 37f9ccdc868c28d03d59881b7fe3c5d3abbb5f6e
Author: Zilong Zhu <zhuzilong2...@gmail.com>
AuthorDate: Tue Mar 26 17:35:55 2024 +0800

    HDFS-17368. HA: Standby should exit safemode when resources are available. 
(#6518). Contributed by Zilong Zhu.
    
    Signed-off-by: He Xiaoqiao <hexiaoq...@apache.org>
---
 .../org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java  | 11 +++++++----
 .../apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java |  7 +++++++
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index 075398f000ec..542cc370465e 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -1578,6 +1578,10 @@ public class FSNamesystem implements Namesystem, 
FSNamesystemMBean,
       standbyCheckpointer = new StandbyCheckpointer(conf, this);
       standbyCheckpointer.start();
     }
+    if (isNoManualAndResourceLowSafeMode()) {
+      LOG.info("Standby should not enter safe mode when resources are low, 
exiting safe mode.");
+      leaveSafeMode(false);
+    }
   }
 
   /**
@@ -5253,10 +5257,9 @@ public class FSNamesystem implements Namesystem, 
FSNamesystemMBean,
     String cmd = "Use \"hdfs dfsadmin -safemode leave\" to turn safe mode 
off.";
     synchronized (this) {
       if (resourceLowSafeMode) {
-        return "Resources are low on NN. Please add or free up more resources"
-            + "then turn off safe mode manually. NOTE:  If you turn off safe "
-            + "mode before adding resources, the NN will immediately return to 
"
-            + "safe mode. " + cmd;
+        return "Resources are low on NN. Please add or free up more resources. 
"
+            + "NOTE:  If you turn off safe mode before adding resources, the "
+            + "NN will immediately return to safe mode. ";
       } else if (manualSafeMode) {
         return "It was turned on manually. " + cmd;
       }
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java
index 4766c4cecc9b..0ac9eae7f540 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestHASafeMode.java
@@ -999,4 +999,11 @@ public class TestHASafeMode {
           () -> miniCluster.transitionToObserver(0));
     }
   }
+
+  @Test
+  public void testTransitionToStandbyWhenSafeModeWithResourcesLow() throws 
Exception {
+    NameNodeAdapter.enterSafeMode(nn0, true);
+    cluster.transitionToStandby(0);
+    assertFalse("SNN should not enter safe mode when resources low", 
nn0.isInSafeMode());
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to