quarkus: 3.2.8.Final causing failure in ServerSentEventsTraceOpentracingIT in quarkus-qe/quarkus-test-suite

Describe the bug

3.2.8.Final causing failure in ServerSentEventsTraceOpentracingIT in quarkus-qe/quarkus-test-suite

This test passes with 3.2.7.Final and prior versions.

16:09:54,515 INFO  ## Running test ServerSentEventsTraceOpentracingIT.testServerClientTrace()
16:09:56,782 INFO  [app] 16:09:55,577 Recorded trace ID: 47216c36c680e4bb
16:09:56,783 INFO  [app] 16:09:55,716 Recorded trace ID: 47216c36c680e4bb
16:09:56,783 INFO  [app] 16:09:55,742 Uncaught exception received by Vert.x: java.lang.NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because "this.data" is null
16:09:56,783 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.InboundSseEventImpl.readData(InboundSseEventImpl.java:121)
16:09:56,783 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.InboundSseEventImpl.readData(InboundSseEventImpl.java:111)
16:09:56,784 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.MultiInvoker.lambda$registerForSse$2(MultiInvoker.java:166)
16:09:56,784 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseEventSourceImpl.fireEvent(SseEventSourceImpl.java:224)
16:09:56,784 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.dispatchEvent(SseParser.java:164)
16:09:56,784 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.parseEvent(SseParser.java:138)
16:09:56,785 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.handle(SseParser.java:108)
16:09:56,785 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.handle(SseParser.java:11)
16:09:56,785 INFO  [app] 	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:277)
16:09:56,785 INFO  [app] 	at io.vertx.core.http.impl.HttpEventHandler.handleChunk(HttpEventHandler.java:51)
16:09:56,785 INFO  [app] 	at io.vertx.core.http.impl.HttpClientResponseImpl.handleChunk(HttpClientResponseImpl.java:239)
16:09:56,786 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:454)
16:09:56,786 INFO  [app] 	at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)
16:09:56,786 INFO  [app] 	at io.vertx.core.streams.impl.InboundBuffer.drain(InboundBuffer.java:242)
16:09:56,786 INFO  [app] 	at io.vertx.core.streams.impl.InboundBuffer.lambda$fetch$0(InboundBuffer.java:295)
16:09:56,786 INFO  [app] 	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:277)
16:09:56,787 INFO  [app] 	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:259)
16:09:56,787 INFO  [app] 	at io.vertx.core.impl.EventLoopContext.lambda$runOnContext$0(EventLoopContext.java:43)
16:09:56,787 INFO  [app] 	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
16:09:56,787 INFO  [app] 	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
16:09:56,787 INFO  [app] 	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
16:09:56,788 INFO  [app] 	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
16:09:56,788 INFO  [app] 	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
16:09:56,788 INFO  [app] 	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
16:09:56,788 INFO  [app] 	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
16:09:56,788 INFO  [app] 	at java.base/java.lang.Thread.run(Thread.java:833)
16:09:56,789 INFO  [app] 16:09:55,743 Uncaught exception received by Vert.x: java.lang.NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because "this.data" is null
16:09:56,789 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.InboundSseEventImpl.readData(InboundSseEventImpl.java:121)
16:09:56,789 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.InboundSseEventImpl.readData(InboundSseEventImpl.java:111)
16:09:56,789 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.MultiInvoker.lambda$registerForSse$2(MultiInvoker.java:166)
16:09:56,789 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseEventSourceImpl.fireEvent(SseEventSourceImpl.java:224)
16:09:56,790 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.dispatchEvent(SseParser.java:164)
16:09:56,790 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.parseEvent(SseParser.java:138)
16:09:56,790 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.handle(SseParser.java:108)
16:09:56,790 INFO  [app] 	at org.jboss.resteasy.reactive.client.impl.SseParser.handle(SseParser.java:11)
16:09:56,790 INFO  [app] 	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:277)
16:09:56,790 INFO  [app] 	at io.vertx.core.http.impl.HttpEventHandler.handleChunk(HttpEventHandler.java:51)
16:09:56,791 INFO  [app] 	at io.vertx.core.http.impl.HttpClientResponseImpl.handleChunk(HttpClientResponseImpl.java:239)
16:09:56,791 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:454)
16:09:56,791 INFO  [app] 	at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)
16:09:56,791 INFO  [app] 	at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134)
16:09:56,791 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleChunk(Http1xClientConnection.java:706)
16:09:56,792 INFO  [app] 	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:76)
16:09:56,792 INFO  [app] 	at io.vertx.core.impl.DuplicatedContext.execute(DuplicatedContext.java:174)
16:09:56,792 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection.handleResponseChunk(Http1xClientConnection.java:894)
16:09:56,792 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection.handleHttpMessage(Http1xClientConnection.java:813)
16:09:56,792 INFO  [app] 	at io.vertx.core.http.impl.Http1xClientConnection.handleMessage(Http1xClientConnection.java:780)
16:09:56,793 INFO  [app] 	at io.vertx.core.net.impl.ConnectionBase.read(ConnectionBase.java:159)
16:09:56,793 INFO  [app] 	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:153)
16:09:56,793 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
16:09:56,793 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
16:09:56,793 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
16:09:56,793 INFO  [app] 	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
16:09:56,794 INFO  [app] 	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
16:09:56,794 INFO  [app] 	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
16:09:56,794 INFO  [app] 	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454)
16:09:56,794 INFO  [app] 	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
16:09:56,794 INFO  [app] 	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
16:09:56,795 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
16:09:56,795 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
16:09:56,795 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
16:09:56,795 INFO  [app] 	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
16:09:56,795 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
16:09:56,795 INFO  [app] 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
16:09:56,795 INFO  [app] 	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
16:09:56,796 INFO  [app] 	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
16:09:56,796 INFO  [app] 	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
16:09:56,796 INFO  [app] 	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
16:09:56,796 INFO  [app] 	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
16:09:56,796 INFO  [app] 	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
16:09:56,796 INFO  [app] 	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
16:09:56,797 INFO  [app] 	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
16:09:56,797 INFO  [app] 	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
16:09:56,797 INFO  [app] 	at java.base/java.lang.Thread.run(Thread.java:833)
16:09:57,871 INFO  [app] Service stopped (Quarkus JVM mode)

Expected behavior

ServerSentEventsTraceOpentracingIT test passes

Actual behavior

ServerSentEventsTraceOpentracingIT test fails

How to Reproduce?

  • Clone https://github.com/quarkus-qe/quarkus-test-suite repo
  • Checkout 3.2 branch
  • run mvn clean verify -f monitoring/opentracing-reactive-grpc -Dit.test=ServerSentEventsTraceOpentracingIT#testServerClientTrace -Dquarkus.platform.version=3.2.8.Final

This test passes with 3.2.7.Final and prior versions.

Output of uname -a or ver

macOS

Output of java -version

Java 17

Quarkus version or git rev

3.2.8.Final

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

About this issue

  • Original URL
  • State: open
  • Created 8 months ago
  • Reactions: 1
  • Comments: 24 (22 by maintainers)

Most upvoted comments

I switched quarkus-rest-client-reactive with quarkus-rest-client-mutiny and the test fails

https://github.com/quarkusio/quarkus/commit/8449c98e2f5c61156e79497c16f3b58c9b01435e says

Don't ignore empty SSE events in client
RESTEasy Classic does not ignore them, so let's keep the same behavior

So I can confirm that in 3.2.8.Final we have consistent behaviour 😃 I will check what can be changed in test to make it running on 3.2.8.Final. But any hint from @geoand would be welcome.

I don’t think we need to revert the change, it was triggered by GH issue.