This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 95b2caac7b HDDS-10628. Display if safemode exit was via force exit
command. (#6494)
95b2caac7b is described below
commit 95b2caac7be1d771af9d0a0b48a40da6ad0b4a96
Author: Sadanand Shenoy <[email protected]>
AuthorDate: Wed Apr 24 11:49:53 2024 +0530
HDDS-10628. Display if safemode exit was via force exit command. (#6494)
---
.../hdds/scm/safemode/SCMSafeModeManager.java | 30 +++++++++++++++++++---
.../apache/hadoop/hdds/scm/server/SCMMXBean.java | 7 +++++
.../hdds/scm/server/StorageContainerManager.java | 7 ++++-
.../main/resources/webapps/scm/scm-overview.html | 4 +++
4 files changed, 43 insertions(+), 5 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
index f882a627c5..a5ecdb2342 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
@@ -88,6 +88,7 @@ public class SCMSafeModeManager implements SafeModeManager {
private final boolean isSafeModeEnabled;
private AtomicBoolean inSafeMode = new AtomicBoolean(true);
private AtomicBoolean preCheckComplete = new AtomicBoolean(false);
+ private AtomicBoolean forceExitSafeMode = new AtomicBoolean(false);
private Map<String, SafeModeExitRule> exitRules = new HashMap(1);
private Set<String> preCheckRules = new HashSet<>(1);
@@ -151,7 +152,7 @@ public class SCMSafeModeManager implements SafeModeManager {
}
} else {
this.safeModeMetrics = null;
- exitSafeMode(eventQueue);
+ exitSafeMode(eventQueue, true);
}
}
@@ -173,6 +174,8 @@ public class SCMSafeModeManager implements SafeModeManager {
SafeModeStatus safeModeStatus =
new SafeModeStatus(getInSafeMode(), getPreCheckComplete());
+ safeModeStatus.setForceExitSafeMode(isForceExitSafeMode());
+
// update SCMContext
scmContext.updateSafeModeStatus(safeModeStatus);
@@ -213,7 +216,7 @@ public class SCMSafeModeManager implements SafeModeManager {
if (validatedRules.size() == exitRules.size()) {
// All rules are satisfied, we can exit safe mode.
LOG.info("ScmSafeModeManager, all rules are successfully validated");
- exitSafeMode(eventQueue);
+ exitSafeMode(eventQueue, false);
}
}
@@ -238,14 +241,16 @@ public class SCMSafeModeManager implements
SafeModeManager {
* 3. Cleanup resources.
* 4. Emit safe mode status.
* @param eventQueue
+ * @param force
*/
@VisibleForTesting
- public void exitSafeMode(EventPublisher eventQueue) {
+ public void exitSafeMode(EventPublisher eventQueue, boolean force) {
LOG.info("SCM exiting safe mode.");
// If safemode is exiting, then pre check must also have passed so
// set it to true.
setPreCheckComplete(true);
setInSafeMode(false);
+ setForceExitSafeMode(force);
// TODO: Remove handler registration as there is no need to listen to
// register events anymore.
@@ -289,7 +294,6 @@ public class SCMSafeModeManager implements SafeModeManager {
}
return inSafeMode.get();
}
-
/**
* Get the safe mode status of all rules.
*
@@ -319,6 +323,14 @@ public class SCMSafeModeManager implements SafeModeManager
{
this.preCheckComplete.set(newState);
}
+ public boolean isForceExitSafeMode() {
+ return forceExitSafeMode.get();
+ }
+
+ public void setForceExitSafeMode(boolean forceExitSafeMode) {
+ this.forceExitSafeMode.set(forceExitSafeMode);
+ }
+
public static Logger getLogger() {
return LOG;
}
@@ -350,6 +362,8 @@ public class SCMSafeModeManager implements SafeModeManager {
private final boolean safeModeStatus;
private final boolean preCheckPassed;
+ private boolean forceExitSafeMode;
+
public SafeModeStatus(boolean safeModeState, boolean preCheckPassed) {
this.safeModeStatus = safeModeState;
this.preCheckPassed = preCheckPassed;
@@ -363,6 +377,14 @@ public class SCMSafeModeManager implements SafeModeManager
{
return preCheckPassed;
}
+ public void setForceExitSafeMode(boolean forceExitSafeMode) {
+ this.forceExitSafeMode = forceExitSafeMode;
+ }
+
+ public boolean isForceExitSafeMode() {
+ return forceExitSafeMode;
+ }
+
@Override
public String toString() {
return "SafeModeStatus{" +
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java
index 6054e1af07..de609356b2 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java
@@ -48,6 +48,13 @@ public interface SCMMXBean extends ServiceRuntimeInfo {
*/
boolean isInSafeMode();
+
+ /**
+ * Returns if safe mode exit is forceful.
+ * @return boolean
+ */
+ boolean isSafeModeExitForceful();
+
/**
* Returns live safe mode container threshold.
* @return String
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
index fa67dd68de..e86dab5fd7 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
@@ -1983,6 +1983,11 @@ public final class StorageContainerManager extends
ServiceRuntimeInfoImpl
return scmSafeModeManager.getInSafeMode();
}
+ @Override
+ public boolean isSafeModeExitForceful() {
+ return scmSafeModeManager.isForceExitSafeMode();
+ }
+
/**
* Returns EventPublisher.
*/
@@ -2015,7 +2020,7 @@ public final class StorageContainerManager extends
ServiceRuntimeInfoImpl
* Force SCM out of safe mode.
*/
public boolean exitSafeMode() {
- scmSafeModeManager.exitSafeMode(eventQueue);
+ scmSafeModeManager.exitSafeMode(eventQueue, true);
return true;
}
diff --git
a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html
b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html
index fdd8de15b6..be110c9cc5 100644
--- a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html
+++ b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html
@@ -124,6 +124,10 @@
<td>Node Manager: Safe mode status</td>
<td>{{$ctrl.overview.jmx.InSafeMode}}</td>
</tr>
+ <tr ng-hide="!$ctrl.overview.jmx.SafeModeExitForceful">
+ <td> Force Exit Safe Mode </td>
+ <td>{{$ctrl.overview.jmx.SafeModeExitForceful}}</td>
+ </tr>
<tr>
<td> SCM Roles (HA) </td>
<td>{{$ctrl.overview.jmx.ScmRatisRoles}}</td>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]