confluentinc / confluent-docker-utils

Common Python utils for testing Confluent's Docker images
Apache License 2.0
2 stars 3 forks source link

Add missing TelemetryReporter class to CUB_CLASSPATH #51

Closed kpoxo6op closed 1 year ago

kpoxo6op commented 1 year ago

Kafka Connect fails to start up when Confluent Telemetry is enabled.

container logs:

kubectl logs kafka-connect -f
===> Configuring ...
===> Running preflight checks ... 
===> Check if Kafka is healthy ...
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/share/java/cp-base-new/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/share/java/cp-base-new/slf4j-simple-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
Error while running kafka-ready.
org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
    at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:538)
    at org.apache.kafka.clients.admin.Admin.create(Admin.java:143)
    at org.apache.kafka.clients.admin.AdminClient.create(AdminClient.java:49)
    at io.confluent.admin.utils.ClusterStatus.isKafkaReady(ClusterStatus.java:136)
    at io.confluent.admin.utils.cli.KafkaReadyCommand.main(KafkaReadyCommand.java:149)
Caused by: org.apache.kafka.common.KafkaException: Class io.confluent.telemetry.reporter.TelemetryReporter cannot be found
    at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:396)
    at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:478)
    at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:459)
    at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:494)
    ... 4 more
Caused by: java.lang.ClassNotFoundException: io.confluent.telemetry.reporter.TelemetryReporter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at org.apache.kafka.common.utils.Utils.loadClass(Utils.java:419)
    at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:408)
    at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:394)
... 7 more

Workaround via env (k8s):

  env:
    - name: CUB_CLASSPATH
      value: "/usr/share/java/cp-base/*:/usr/share/java/cp-base-new/*:/usr/share/java/confluent-telemetry/*"
CLAassistant commented 1 year ago

CLA assistant check
All committers have signed the CLA.

gracechensd commented 1 year ago

Thanks for bringing this up again! The team has investigated and has decided to disable the metric reporter feature that was being used in that part of the product, without needing to add to the CUB_CLASSPATH for all CP images. Tested and kafka connect now starts normally even if Confluent Telemetry is disabled, so I'll be closing this for now. This will be available starting in our 2023 Q1 CP releases (ETA within the next two weeks).