dajac commented on code in PR #13924:
URL: https://github.com/apache/kafka/pull/13924#discussion_r1254371528


##########
core/src/main/scala/kafka/log/LogCleanerManager.scala:
##########
@@ -88,17 +88,23 @@ private[log] class LogCleanerManager(val logDirs: Seq[File],
   /* for coordinating the pausing and the cleaning of a partition */
   private val pausedCleaningCond = lock.newCondition()
 
+  // Avoid adding legacy tags for a metric when initializing 
`LogCleanerManager`
+  GaugeMetricNameWithTag.clear()
   /* gauges for tracking the number of partitions marked as uncleanable for 
each log directory */
   for (dir <- logDirs) {
-    metricsGroup.newGauge("uncleanable-partitions-count",
+    val metricTag = Map("logDirectory" -> dir.getAbsolutePath).asJava
+    metricsGroup.newGauge(UncleanablePartitionsCountMetricName,
       () => inLock(lock) { 
uncleanablePartitions.get(dir.getAbsolutePath).map(_.size).getOrElse(0) },
-      Map("logDirectory" -> dir.getAbsolutePath).asJava
+      metricTag
     )
+    
GaugeMetricNameWithTag.computeIfAbsent(UncleanablePartitionsCountMetricName, k 
=> new java.util.ArrayList[java.util.Map[String, String]]())

Review Comment:
   Hum... This does not seem safe. I just noticed the following failure in CI:
   
   ```
   Error
   org.apache.kafka.server.fault.FaultHandlerException: fatalFaultHandler: 
Error starting LogManager: null
   Stacktrace
   org.apache.kafka.server.fault.FaultHandlerException: fatalFaultHandler: 
Error starting LogManager: null
        at java.base@17.0.7/java.util.HashMap.computeIfAbsent(HashMap.java:1221)
        at 
app//kafka.log.LogCleanerManager.$anonfun$new$1(LogCleanerManager.scala:100)
        at 
app//kafka.log.LogCleanerManager.$anonfun$new$1$adapted(LogCleanerManager.scala:94)
        at app//scala.collection.IterableOnceOps.foreach(IterableOnce.scala:576)
        at 
app//scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:574)
        at app//scala.collection.AbstractIterable.foreach(Iterable.scala:933)
        at app//kafka.log.LogCleanerManager.<init>(LogCleanerManager.scala:94)
        at app//kafka.log.LogCleaner.<init>(LogCleaner.scala:109)
        at 
app//kafka.log.LogManager.startupWithConfigOverrides(LogManager.scala:571)
        at app//kafka.log.LogManager.startup(LogManager.scala:504)
        at 
app//kafka.server.metadata.BrokerMetadataPublisher.initializeManagers(BrokerMetadataPublisher.scala:350)
        at 
app//kafka.server.metadata.BrokerMetadataPublisher.onMetadataUpdate(BrokerMetadataPublisher.scala:162)
        at 
app//org.apache.kafka.image.loader.MetadataLoader.initializeNewPublishers(MetadataLoader.java:301)
        at 
app//org.apache.kafka.image.loader.MetadataLoader.lambda$scheduleInitializeNewPublishers$0(MetadataLoader.java:258)
        at 
app//org.apache.kafka.queue.KafkaEventQueue$EventContext.run(KafkaEventQueue.java:127)
        at 
app//org.apache.kafka.queue.KafkaEventQueue$EventHandler.handleEvents(KafkaEventQueue.java:210)
        at 
app//org.apache.kafka.queue.KafkaEventQueue$EventHandler.run(KafkaEventQueue.java:181)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
   Caused by: java.util.ConcurrentModificationException
        ... 18 more
   ```
   
   
https://ci-builds.apache.org/blue/organizations/jenkins/Kafka%2Fkafka-pr/detail/PR-13954/6/tests
   
   cc @divijvaidya 



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to