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

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

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 1.0.0
    • Fix Version/s: 1.0.1, 1.1.0
    • Component/s: KafkaConnect
    • Labels:
      None
    • Environment:
      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

              • Assignee:
                wicknicks Arjun Satish
                Reporter:
                alexis.sellier Alexis Sellier
                Reviewer:
                Ewen Cheslack-Postava
              • Votes:
                7 Vote for this issue
                Watchers:
                11 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: