diff --git a/core/src/main/java/org/apache/accumulo/core/conf/Property.java b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
index 80d8cd92b8f..160d9bca060 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@ -830,6 +830,12 @@ public enum Property {
+ " The resources that are used by default can be seen in"
+ " `accumulo/server/monitor/src/main/resources/templates/default.ftl`.",
"2.0.0"),
+ MONITOR_DEAD_LIST_RG_EXCLUSIONS("monitor.dead.server.rg.exclusions", "", PropertyType.STRING,
+ "The Monitor displays information about servers that it believes have died recently."
+ + " This property accepts a comma separated list of resource group names. If"
+ + " the dead servers resource group matches a resource group in this list,"
+ + " then it will be suppressed from the dead servers list in the monitor.",
+ "4.0.0"),
// per table properties
TABLE_PREFIX("table.", null, PropertyType.PREFIX,
"Properties in this category affect tablet server treatment of tablets,"
diff --git a/server/monitor/pom.xml b/server/monitor/pom.xml
index 1dd6bcc42a4..ef5e563ca12 100644
--- a/server/monitor/pom.xml
+++ b/server/monitor/pom.xml
@@ -76,6 +76,10 @@
org.apache.accumulo
accumulo-start
+
+ org.apache.commons
+ commons-lang3
+
org.apache.logging.log4j
log4j-web
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
index 6abfc6e2fba..eab9eee7e93 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
@@ -20,6 +20,7 @@
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -32,6 +33,7 @@
import jakarta.ws.rs.core.MediaType;
import org.apache.accumulo.core.client.admin.servers.ServerId;
+import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.gc.thrift.GCStatus;
import org.apache.accumulo.core.manager.thrift.DeadServer;
import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
@@ -46,6 +48,7 @@
import org.apache.accumulo.monitor.rest.tservers.ServerShuttingDownInformation;
import org.apache.accumulo.monitor.rest.tservers.ServersShuttingDown;
import org.apache.accumulo.server.manager.state.TabletServerState;
+import org.apache.commons.lang3.StringUtils;
/**
* Responsible for generating a new Manager information JSON object
@@ -173,10 +176,23 @@ public static DeadServerList getDeadTservers(Monitor monitor) {
}
DeadServerList deadServers = new DeadServerList();
+
+ String prop = monitor.getConfiguration().get(Property.MONITOR_DEAD_LIST_RG_EXCLUSIONS);
+ Set exclusions = null;
+ if (StringUtils.isNotBlank(prop)) {
+ String[] rgs = prop.split(",");
+ exclusions = new HashSet<>(rgs.length);
+ for (String s : rgs) {
+ exclusions.add(s.trim());
+ }
+ }
+
// Add new dead servers to the list
for (DeadServer dead : mmi.deadTabletServers) {
- deadServers
- .addDeadServer(new DeadServerInformation(dead.server, dead.lastStatus, dead.status));
+ if (exclusions == null || !exclusions.contains(dead.getResourceGroup())) {
+ deadServers
+ .addDeadServer(new DeadServerInformation(dead.server, dead.lastStatus, dead.status));
+ }
}
return deadServers;
}