apache / beam

Apache Beam is a unified programming model for Batch and Streaming data processing.
https://beam.apache.org/
Apache License 2.0
7.79k stars 4.22k forks source link

[Bug]: NPE on JmsIO #32483

Closed flo076 closed 6 days ago

flo076 commented 1 week ago

What happened?

I have a Null pointer exception when using JmsIO with qpid-jms-client:1.11.0.

Here messageId can be null and raise a Null pointer exception : https://github.com/apache/beam/blob/release-2.59.0/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java#L698C21-L698C30

stacktrace

Exception in thread "main" java.lang.RuntimeException: java.io.IOException: java.lang.NullPointerException
    at org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish(DirectRunner.java:385)
    at org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish(DirectRunner.java:345)
    at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:218)
    at org.apache.beam.runners.direct.DirectRunner.run(DirectRunner.java:67)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:325)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:310)
    at com.renault.datalake.dll.pipelines.Main.main(Main.java:174)
Caused by: java.io.IOException: java.lang.NullPointerException
    at org.apache.beam.sdk.io.jms.JmsIO$UnboundedJmsReader.advance(JmsIO.java:702)
    at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.startReader(UnboundedReadEvaluatorFactory.java:243)
    at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.processElement(UnboundedReadEvaluatorFactory.java:138)
    at org.apache.beam.runners.direct.DirectTransformExecutor.processElements(DirectTransformExecutor.java:165)
    at org.apache.beam.runners.direct.DirectTransformExecutor.run(DirectTransformExecutor.java:129)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NullPointerException
    at org.apache.beam.sdk.io.jms.JmsIO$UnboundedJmsReader.advance(JmsIO.java:698)
    ... 10 more

Issue Priority

Priority: 2 (default / most bugs should be filed as P2)

Issue Components

Abacn commented 1 week ago

Different Jms implementation and different config really has different behaviors. A fix could be assigning to random uuid to messageId. For now pin to Beam <= 2.54.0 should mitigate the issue.