Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-18003

camel-kafka: manual pause of consumer causes ConcurrentModificationException

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • camel-health, camel-kafka
    • None
    • Unknown

    Description

      The Kafka consumer is not safe for concurrent access. We need to protect it from multiple different threads trying to access the instance on the component consumer. Otherwise:

      java.util.ConcurrentModificationException: KafkaConsumer is not safe for multi-threaded access
              at org.apache.kafka.clients.consumer.KafkaConsumer.acquire(KafkaConsumer.java:2469) ~[kafka-clients-3.1.0.jar:?]
              at org.apache.kafka.clients.consumer.KafkaConsumer.acquireAndEnsureOpen(KafkaConsumer.java:2453) ~[kafka-clients-3.1.0.jar:?]
              at org.apache.kafka.clients.consumer.KafkaConsumer.assignment(KafkaConsumer.java:891) ~[kafka-clients-3.1.0.jar:?]
              at org.apache.camel.component.kafka.KafkaFetchRecords.pause(KafkaFetchRecords.java:519) ~[camel-kafka-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at org.apache.camel.component.kafka.KafkaConsumer.doSuspend(KafkaConsumer.java:221) ~[camel-kafka-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at org.apache.camel.support.service.BaseService.suspend(BaseService.java:189) ~[camel-api-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at org.apache.camel.support.service.ServiceHelper.suspendService(ServiceHelper.java:404) ~[camel-api-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at org.apache.camel.impl.engine.DefaultShutdownStrategy.suspendNow(DefaultShutdownStrategy.java:447) ~[camel-base-engine-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at org.apache.camel.impl.engine.DefaultShutdownStrategy$ShutdownTask.run(DefaultShutdownStrategy.java:620) ~[camel-base-engine-3.17.0-SNAPSHOT.jar:3.17.0-SNAPSHOT]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
              at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
              at java.lang.Thread.run(Thread.java:833) ~[?:?]

      Attachments

        Issue Links

          Activity

            People

              orpiske Otavio Rodolfo Piske
              orpiske Otavio Rodolfo Piske
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: