Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-6252

A metric named 'XX' already exists, can't register another one.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 1.0.0
    • 1.0.1, 1.1.0
    • connect
    • None
    • Linux

    Description

      When a connector crashes (or is not implemented correctly by not stopping/interrupting poll()), It cannot be restarted and an exception like this is thrown

      java.lang.IllegalArgumentException: A metric named 'MetricName [name=offset-commit-max-time-ms, group=connector-task-metrics, description=The maximum time in milliseconds taken by this task to commit offsets., tags={connector=hdfs-sink-connector-recover, task=0}]' already exists, can't register another one.
      	at org.apache.kafka.common.metrics.Metrics.registerMetric(Metrics.java:532)
      	at org.apache.kafka.common.metrics.Sensor.add(Sensor.java:256)
      	at org.apache.kafka.common.metrics.Sensor.add(Sensor.java:241)
      	at org.apache.kafka.connect.runtime.WorkerTask$TaskMetricsGroup.<init>(WorkerTask.java:328)
      	at org.apache.kafka.connect.runtime.WorkerTask.<init>(WorkerTask.java:69)
      	at org.apache.kafka.connect.runtime.WorkerSinkTask.<init>(WorkerSinkTask.java:98)
      	at org.apache.kafka.connect.runtime.Worker.buildWorkerTask(Worker.java:449)
      	at org.apache.kafka.connect.runtime.Worker.startTask(Worker.java:404)
      	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.startTask(DistributedHerder.java:852)
      	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.access$1600(DistributedHerder.java:108)
      	at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:866)
      	at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:862)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      

      I guess it's because the function taskMetricsGroup.close is not call in all the cases

      Attachments

        Issue Links

          Activity

            People

              wicknicks Arjun Satish
              alexis.sellier Alexis Sellier
              Ewen Cheslack-Postava Ewen Cheslack-Postava
              Votes:
              7 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: