ソースを参照

HDFS-14259. RBF: Fix safemode message for Router. Contributed by Ranith Sadar.

Inigo Goiri 6 年 前
コミット
7400a0a6de

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/NamenodeBeanMetrics.java

@@ -234,7 +234,7 @@ public class NamenodeBeanMetrics
   @Override
   @Override
   public String getSafemode() {
   public String getSafemode() {
     try {
     try {
-      if (!getRouter().isRouterState(RouterServiceState.SAFEMODE)) {
+      if (getRouter().isRouterState(RouterServiceState.SAFEMODE)) {
         return "Safe mode is ON. " + this.getSafeModeTip();
         return "Safe mode is ON. " + this.getSafeModeTip();
       }
       }
     } catch (IOException e) {
     } catch (IOException e) {

+ 7 - 1
hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java

@@ -747,6 +747,9 @@ public class TestRouterAdminCLI {
 
 
     FederationMetrics metrics = router.getMetrics();
     FederationMetrics metrics = router.getMetrics();
     String jsonString = metrics.getRouterStatus();
     String jsonString = metrics.getRouterStatus();
+    String result = router.getNamenodeMetrics().getSafemode();
+    assertTrue("Wrong safe mode message: " + result,
+        result.startsWith("Safe mode is ON."));
 
 
     // verify state using FederationMetrics
     // verify state using FederationMetrics
     assertEquals(RouterServiceState.SAFEMODE.toString(), jsonString);
     assertEquals(RouterServiceState.SAFEMODE.toString(), jsonString);
@@ -756,6 +759,9 @@ public class TestRouterAdminCLI {
     assertEquals(0,
     assertEquals(0,
         ToolRunner.run(admin, new String[] {"-safemode", "leave" }));
         ToolRunner.run(admin, new String[] {"-safemode", "leave" }));
     jsonString = metrics.getRouterStatus();
     jsonString = metrics.getRouterStatus();
+    result = router.getNamenodeMetrics().getSafemode();
+    assertEquals("Wrong safe mode message: " + result, "", result);
+
     // verify state
     // verify state
     assertEquals(RouterServiceState.RUNNING.toString(), jsonString);
     assertEquals(RouterServiceState.RUNNING.toString(), jsonString);
     assertFalse(routerContext.getRouter().getSafemodeService().isInSafeMode());
     assertFalse(routerContext.getRouter().getSafemodeService().isInSafeMode());
@@ -1153,4 +1159,4 @@ public class TestRouterAdminCLI {
     argv = new String[] {"-getDestination /file1.txt /file2.txt"};
     argv = new String[] {"-getDestination /file1.txt /file2.txt"};
     assertEquals(-1, ToolRunner.run(admin, argv));
     assertEquals(-1, ToolRunner.run(admin, argv));
   }
   }
-}
+}