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; }