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 4ed3ef8  HDDS-6121. DatanodeAdminMonitor should log detailed 
information for a limited number of containers (#2932)
4ed3ef8 is described below

commit 4ed3ef800f37cf3e5aaa6e3d8feb640ae8837a04
Author: Stephen O'Donnell <[email protected]>
AuthorDate: Tue Dec 28 07:37:58 2021 +0000

    HDDS-6121. DatanodeAdminMonitor should log detailed information for a 
limited number of containers (#2932)
---
 .../hdds/scm/node/DatanodeAdminMonitorImpl.java    | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeAdminMonitorImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeAdminMonitorImpl.java
index 654b6fa..afb33d9 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeAdminMonitorImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeAdminMonitorImpl.java
@@ -23,6 +23,7 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState;
 import org.apache.hadoop.hdds.scm.container.ContainerID;
 import org.apache.hadoop.hdds.scm.container.ContainerNotFoundException;
+import org.apache.hadoop.hdds.scm.container.ContainerReplica;
 import org.apache.hadoop.hdds.scm.container.ContainerReplicaCount;
 import org.apache.hadoop.hdds.scm.container.ReplicationManager;
 import org.apache.hadoop.hdds.scm.events.SCMEvents;
@@ -69,6 +70,9 @@ public class DatanodeAdminMonitorImpl implements 
DatanodeAdminMonitor {
 
   private static final Logger LOG =
       LoggerFactory.getLogger(DatanodeAdminMonitorImpl.class);
+  // The number of containers for each of under replicated and unhealthy
+  // that will be logged in detail each time a node is checked.
+  private static final int CONTAINER_DETAILS_LOGGING_LIMIT = 5;
 
   public DatanodeAdminMonitorImpl(
       OzoneConfiguration conf,
@@ -290,12 +294,22 @@ public class DatanodeAdminMonitorImpl implements 
DatanodeAdminMonitor {
           if (LOG.isDebugEnabled()) {
             underReplicatedIDs.add(cid);
           }
+          if (underReplicated < CONTAINER_DETAILS_LOGGING_LIMIT
+              || LOG.isDebugEnabled()) {
+            LOG.info("Under Replicated Container {} {}; {}",
+                cid, replicaSet, replicaDetails(replicaSet.getReplica()));
+          }
           underReplicated++;
         }
         if (!replicaSet.isHealthy()) {
           if (LOG.isDebugEnabled()) {
             unhealthyIDs.add(cid);
           }
+          if (unhealthy < CONTAINER_DETAILS_LOGGING_LIMIT
+              || LOG.isDebugEnabled()) {
+            LOG.info("Unhealthy Container {} {}; {}",
+                cid, replicaSet, replicaDetails(replicaSet.getReplica()));
+          }
           unhealthy++;
         }
       } catch (ContainerNotFoundException e) {
@@ -318,6 +332,16 @@ public class DatanodeAdminMonitorImpl implements 
DatanodeAdminMonitor {
     return underReplicated == 0 && unhealthy == 0;
   }
 
+  private String replicaDetails(Set<ContainerReplica> replicas) {
+    StringBuilder sb = new StringBuilder();
+    sb.append("Replicas{");
+    sb.append(replicas.stream()
+        .map(Object::toString)
+        .collect(Collectors.joining(",")));
+    sb.append("}");
+    return sb.toString();
+  }
+
   private void completeDecommission(DatanodeDetails dn)
       throws NodeNotFoundException {
     setNodeOpState(dn, NodeOperationalState.DECOMMISSIONED);

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to