sodonnel commented on code in PR #3781: URL: https://github.com/apache/ozone/pull/3781#discussion_r1004464345
########## hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeAdminMonitorImpl.java: ########## @@ -168,6 +232,55 @@ public int getTrackedNodeCount() { return trackedNodes.size(); } + synchronized void setMetricsToGauge() { + metrics.setTrackedContainersUnhealthyTotal(unhealthyContainers); + metrics.setTrackedRecommissionNodesTotal(trackedRecommission); + metrics.setTrackedDecommissioningMaintenanceNodesTotal( + trackedDecomMaintenance); + metrics.setTrackedContainersUnderReplicatedTotal( + underReplicatedContainers); + metrics.setTrackedContainersSufficientlyReplicatedTotal( + sufficientlyReplicatedContainers); + metrics.setTrackedPipelinesWaitingToCloseTotal(pipelinesWaitingToClose); + for (Map.Entry<String, ContainerStateInWorkflow> e : + containerStateByHost.entrySet()) { + metrics.metricRecordOfContainerStateByHost(e.getKey(), + e.getValue().sufficientlyReplicated, + e.getValue().underReplicatedContainers, + e.getValue().unhealthyContainers, + e.getValue().pipelinesWaitingToClose); + } + } + + void resetContainerMetrics() { + pipelinesWaitingToClose = 0; + sufficientlyReplicatedContainers = 0; + unhealthyContainers = 0; + underReplicatedContainers = 0; + + for (Map.Entry<String, ContainerStateInWorkflow> e : Review Comment: At the moment, to reset things, you need to iterate this map and clear all values. Then iterate it again and remove any entries that are no longer tracked. What if, you just clear the map, which is a one liner. Then make ContainerStateInWorkflow a public inner class, and pass the `Map<String, ContainerStateInWorkflow>` directly to the metrics class and have it replace all its metrics internally with the new map. That way reset becomes a lot easier too. Also, if we add another metric for a host, we don't need to add another parameter to the `metricRecordOfContainerStateByHost` method, as it just receives the wrapper object anyway. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For additional commands, e-mail: issues-h...@ozone.apache.org