[ 
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)

Reply via email to