Antony Stubbs created KAFKA-8884: ------------------------------------ Summary: Improve streams errors on class cast exception in ProcessorsNodes Key: KAFKA-8884 URL: https://issues.apache.org/jira/browse/KAFKA-8884 Project: Kafka Issue Type: Improvement Components: streams Affects Versions: 2.3.1 Reporter: Antony Stubbs
If a processor causes a class cast exception, atm you get a bit of a cryptic error if you're not used to them, and without a context sensitive suggestion as to what could be wrong. Often these can be cause by missconfigured Serdes (defaults). As an example of the improvement over the case exception: {{org.apache.kafka.streams.errors.StreamsException: Exception caught in process. taskId=0_0, processor=KSTREAM-SOURCE-0000000000, topic=streams-plaintext-input, partition=0, offset=0, stacktrace=org.apache.kafka.streams.errors.StreamsException: A deserializer (key: org.apache.kafka.common.serialization.ByteArrayDeserializer / value: org.apache.kafka.common.serialization.ByteArrayDeserializer) is not compatible to the actual key or value type (key type: [B / value type: [B). Change the default Serdes in StreamConfig or provide correct Serdes via method parameters.}} {{ at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:96)}} {{ at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:366)}} {{ at org.apache.kafka.streams.TopologyTestDriver.pipeInput(TopologyTestDriver.java:419)}} {{ at org.apache.kafka.streams.processor.internals.ProcessorNodeTest.testTopologyLevelClassCastException(ProcessorNodeTest.java:176)}} {{ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.base/java.lang.reflect.Method.invoke(Method.java:566)}} {{ at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)}} {{ at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)}} {{ at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)}} {{ at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)}} {{ at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:305)}} {{ at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)}} {{ at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:365)}} {{ at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)}} {{ at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)}} {{ at org.junit.runners.ParentRunner$4.run(ParentRunner.java:330)}} {{ at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:78)}} {{ at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:328)}} {{ at org.junit.runners.ParentRunner.access$100(ParentRunner.java:65)}} {{ at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:292)}} {{ at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:305)}} {{ at org.junit.runners.ParentRunner.run(ParentRunner.java:412)}} {{ at org.junit.runner.JUnitCore.run(JUnitCore.java:137)}} {{ at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)}} {{ at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)}} {{ at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)}} {{ at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)}} {{Caused by: java.lang.ClassCastException: class [B cannot be cast to class java.lang.String ([B and java.lang.String are in module java.base of loader 'bootstrap')}} {{ at org.apache.kafka.streams.kstream.internals.AbstractStream.lambda$withKey$1(AbstractStream.java:103)}} {{ at org.apache.kafka.streams.kstream.internals.KStreamFlatMapValues$KStreamFlatMapValuesProcessor.process(KStreamFlatMapValues.java:40)}} {{ at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:118)}} {{ at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:201)}} {{ at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:180)}} {{ at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:133)}} {{ at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:89)}} {{ ... 28 more}} -- This message was sent by Atlassian Jira (v8.3.2#803003)