[ https://issues.apache.org/jira/browse/KAFKA-15239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luke Chen updated KAFKA-15239: ------------------------------ Description: While running producer performance tool in system test for old client, we will try to run with the dev-branch's jar file, to make sure it is backward compatible, as described [here|https://github.com/apache/kafka/blob/trunk/tests/kafkatest/services/performance/producer_performance.py#L86-L88],. {code:java} # In order to ensure more consistent configuration between versions, always use the ProducerPerformance tool from the development branch {code} But in KAFKA-14525, we're moving tools from core module to a separate tool module, we're actually breaking the backward compatibility. We should fix the system test. Also maybe we should also mention anywhere about this backward compatibility issue? Note: This is the command run in system test. Suppose it's testing old client 3.4.0 (file put under `~/Downloads/kafka_2.13-3.4.0` in my env), and running under the latest trunk env. {code:java} > for file in ./tools/build/libs/kafka-tools*.jar; do > CLASSPATH=$CLASSPATH:$file; done; for file in > ./tools/build/dependant-libs*/*.jar; do CLASSPATH=$CLASSPATH:$file; done; > export CLASSPATH; export > KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:config/tools-log4j.properties"; > KAFKA_OPTS= KAFKA_HEAP_OPTS="-XX:+HeapDumpOnOutOfMemoryError" > ~/Downloads/kafka_2.13-3.4.0/bin/kafka-run-class.sh > org.apache.kafka.tools.ProducerPerformance --topic test_topic --num-records > 50000 --record-size 3000 --throughput -1 --producer-props > bootstrap.servers=localhost:9092 client.id=overridden_id Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/utils/ThroughputThrottler at org.apache.kafka.tools.ProducerPerformance.start(ProducerPerformance.java:101) at org.apache.kafka.tools.ProducerPerformance.main(ProducerPerformance.java:52) Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.utils.ThroughputThrottler at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 2 more {code} was: In running producer performance tool in system test for old client, we will try to run with the dev-branch's jar file, to make sure it is backward compatible, as described [here|https://github.com/apache/kafka/blob/trunk/tests/kafkatest/services/performance/producer_performance.py#L86-L88],. {code:java} # In order to ensure more consistent configuration between versions, always use the ProducerPerformance tool from the development branch {code} But in KAFKA-14525, we're moving tools from core module to a separate tool module, we're actually breaking the backward compatibility. We should fix the system test. Also maybe we should also mention anywhere about this backward compatibility issue? Note: This is the command run in system test. Suppose it's testing old client 3.4.0 (file put under `~/Downloads/kafka_2.13-3.4.0` in my env), and running under the latest trunk env. {code:java} > for file in ./tools/build/libs/kafka-tools*.jar; do > CLASSPATH=$CLASSPATH:$file; done; for file in > ./tools/build/dependant-libs*/*.jar; do CLASSPATH=$CLASSPATH:$file; done; > export CLASSPATH; export > KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:config/tools-log4j.properties"; > KAFKA_OPTS= KAFKA_HEAP_OPTS="-XX:+HeapDumpOnOutOfMemoryError" > ~/Downloads/kafka_2.13-3.4.0/bin/kafka-run-class.sh > org.apache.kafka.tools.ProducerPerformance --topic test_topic --num-records > 50000 --record-size 3000 --throughput -1 --producer-props > bootstrap.servers=localhost:9092 client.id=overridden_id Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/utils/ThroughputThrottler at org.apache.kafka.tools.ProducerPerformance.start(ProducerPerformance.java:101) at org.apache.kafka.tools.ProducerPerformance.main(ProducerPerformance.java:52) Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.utils.ThroughputThrottler at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 2 more {code} > producerPerformance system test for old client failed after v3.5.0 > ------------------------------------------------------------------ > > Key: KAFKA-15239 > URL: https://issues.apache.org/jira/browse/KAFKA-15239 > Project: Kafka > Issue Type: Test > Components: system tests > Affects Versions: 3.6.0 > Reporter: Luke Chen > Priority: Major > > While running producer performance tool in system test for old client, we > will try to run with the dev-branch's jar file, to make sure it is backward > compatible, as described > [here|https://github.com/apache/kafka/blob/trunk/tests/kafkatest/services/performance/producer_performance.py#L86-L88],. > {code:java} > # In order to ensure more consistent configuration between versions, always > use the ProducerPerformance tool from the development branch {code} > > But in KAFKA-14525, we're moving tools from core module to a separate tool > module, we're actually breaking the backward compatibility. We should fix the > system test. Also maybe we should also mention anywhere about this backward > compatibility issue? > Note: > This is the command run in system test. Suppose it's testing old client 3.4.0 > (file put under `~/Downloads/kafka_2.13-3.4.0` in my env), and running under > the latest trunk env. > {code:java} > > for file in ./tools/build/libs/kafka-tools*.jar; do > > CLASSPATH=$CLASSPATH:$file; done; for file in > > ./tools/build/dependant-libs*/*.jar; do CLASSPATH=$CLASSPATH:$file; done; > > export CLASSPATH; export > > KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:config/tools-log4j.properties"; > > KAFKA_OPTS= KAFKA_HEAP_OPTS="-XX:+HeapDumpOnOutOfMemoryError" > > ~/Downloads/kafka_2.13-3.4.0/bin/kafka-run-class.sh > > org.apache.kafka.tools.ProducerPerformance --topic test_topic --num-records > > 50000 --record-size 3000 --throughput -1 --producer-props > > bootstrap.servers=localhost:9092 client.id=overridden_id > Exception in thread "main" java.lang.NoClassDefFoundError: > org/apache/kafka/common/utils/ThroughputThrottler > at > org.apache.kafka.tools.ProducerPerformance.start(ProducerPerformance.java:101) > at > org.apache.kafka.tools.ProducerPerformance.main(ProducerPerformance.java:52) > Caused by: java.lang.ClassNotFoundException: > org.apache.kafka.common.utils.ThroughputThrottler > at > java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) > at > java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) > ... 2 more > {code} > > -- This message was sent by Atlassian Jira (v8.20.10#820010)