While proposing changes to Kafka Streams DSL, I propose changing the return type of one method from void
to KStream<KOut, VOut
.
I was under the (wrong) impression that this change wouldn’t affect users.
I was also not considering that applications might just drop a new library without recompiling their application.
This change is what is known as source compatible but not binary compatible — meaning the user will need to recompile their application.
If you drop a newer version into your application expecting a void method would case this:
java -jar kafka-streams-poc-new-transformer-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.NoSuchMethodError: 'void org.apache.kafka.streams.kstream.KStream.process(org.apache.kafka.streams.processor.api.ProcessorSupplier, java.lang.String[])'
at poc.App.topology(App.java:41)
at poc.App.main(App.java:22)