Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use new Vert.x gRPC server for code.quarkus.io #38863

Merged
merged 1 commit into from
Feb 20, 2024
Merged

Conversation

alesj
Copy link
Contributor

@alesj alesj commented Feb 19, 2024

This should fix #37608

@alesj alesj requested a review from cescoffier February 19, 2024 16:22
@quarkus-bot quarkus-bot bot added the area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins label Feb 19, 2024
@alesj alesj requested a review from rsvoboda February 19, 2024 16:23
Copy link

quarkus-bot bot commented Feb 19, 2024

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 12b582b.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.


Flaky tests - Develocity

⚙️ JVM Tests - JDK 21

📦 integration-tests/opentelemetry

io.quarkus.it.opentelemetry.EndUserEnabledTest.baseTest - History

  • AttributesMap{data={code.namespace=io.quarkus.it.opentelemetry.util.EndUserResource, http.route=/otel/enduser, net.protocol.name=http, http.status_code=200, http.scheme=http, net.host.port=8081, http.method=GET, http.response_content_length=0, net.host.name=localhost, user_agent.original=Apache-HttpClient/4.5.14 (Java/21.0.2), code.function=dummy, http.target=/otel/enduser, http.client_ip=127.0.0.1}, capacity=128, totalAddedValues=13} ==> expected: <testUser> but was: <null> - org.opentest4j.AssertionFailedError
org.opentest4j.AssertionFailedError: AttributesMap{data={code.namespace=io.quarkus.it.opentelemetry.util.EndUserResource, http.route=/otel/enduser, net.protocol.name=http, http.status_code=200, http.scheme=http, net.host.port=8081, http.method=GET, http.response_content_length=0, net.host.name=localhost, user_agent.original=Apache-HttpClient/4.5.14 (Java/21.0.2), code.function=dummy, http.target=/otel/enduser, http.client_ip=127.0.0.1}, capacity=128, totalAddedValues=13} ==> expected: <testUser> but was: <null>
	at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
	at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
	at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
	at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
	at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1156)
	at io.quarkus.it.opentelemetry.EndUserEnabledTest.evaluateAttributes(...

📦 integration-tests/virtual-threads/grpc-virtual-threads

io.quarkus.grpc.example.streaming.VertxVirtualThreadTest.testStreamingOutputCall - History

  • INTERNAL: Half-closed without a request - io.grpc.StatusRuntimeException
io.grpc.StatusRuntimeException: INTERNAL: Half-closed without a request
	at io.grpc.Status.asRuntimeException(Status.java:533)
	at io.grpc.stub.ClientCalls$BlockingResponseStream.hasNext(ClientCalls.java:631)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:132)
	at io.quarkus.grpc.example.streaming.VirtualThreadTestBase.testStreamingOutputCall(VirtualThreadTestBase.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:1018)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:832)

@gsmet
Copy link
Member

gsmet commented Feb 20, 2024

I don't know. If we think this is the best approach, shouldn't we switch the default instead?

@cescoffier
Copy link
Member

We are planning to switch the default. Actually, I think we should now. We were waiting after the LTS.

@gsmet
Copy link
Member

gsmet commented Feb 20, 2024

Yeah my point is that if you make it the default in generated projects, you might as well switch the default.

Copy link
Contributor

@ia3andy ia3andy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@ia3andy ia3andy merged commit 060ff77 into quarkusio:main Feb 20, 2024
49 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.9 - main milestone Feb 20, 2024
@ia3andy
Copy link
Contributor

ia3andy commented Feb 20, 2024

As discussed with @alesj this is for 3.7.3 and 3.8, the next will have this as default (and this config will be removed). As codestarts are platform related, it makes sense..

@alesj could you create an issue to delete this and make the right default?

@gsmet gsmet modified the milestones: 3.9 - main, 3.7.4 Feb 20, 2024
@gsmet gsmet modified the milestones: 3.7.4, 3.9 - main Feb 20, 2024
@gsmet
Copy link
Member

gsmet commented Feb 20, 2024

Well, I wasn't able to backport this because things are failing in 3.7.

When testing QuarkusCodestartBuildIT#testGradle, I end up with failures in the test of the generated project:

HelloGrpcServiceTest

io.grpc.StatusRuntimeException: UNKNOWN: HTTP status code 500
invalid content-type: application/json; charset=utf-8
headers: Metadata(:status=500,content-type=application/json; charset=utf-8,content-length=8266)
DATA-----------------------------
{"details":"Error id fc625696-88fe-4197-9060-9fc1c5388908-1, java.lang.IllegalStateException: Request has already been read","stack":"java.lang.IllegalStateException: Request has already been read\n\tat io.vertx.core.http.impl.Http2ServerRequest.checkEnded(Http2ServerRequest.java:209)\n\tat io.vertx.core.http.impl.Http2ServerRequest.handler(Http2ServerRequest.java:248)\n\tat io.quarkus.vertx.http.runtime.ResumingRequestWrapper.handler(ResumingRequestWrapper.java:20)\n\tat io.vertx.core.http.impl.HttpServerRequestWrapper.handler(HttpServerRequestWrapper.java:63)\n\tat io.vertx.core.http.impl.HttpServerRequestWrapper.handler(HttpServerRequestWrapper.java:45)\n\tat io.vertx.grpc.common.impl.GrpcReadStreamBase.init(GrpcReadStreamBase.java:75)\n\tat io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:61)\n\tat io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:46)\n\tat io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:30)\n\tat io.quarkus.grpc.runtime.GrpcServerRecorder.lambda$buildGrpcServer$0(GrpcServerRecorder.java:209)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)\n\tat io.quarkus.vertx.http.runtime.options.HttpServerCommonHandlers$1.handle(HttpServerCommonHandlers.java:62)\n\tat io.quarkus.vertx.http.runtime.options.HttpServerCommonHandlers$1.handle(HttpServerCommonHandlers.java:40)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)\n\tat io.undertow.websockets.vertx.VertxWebSocketHandler.handle(VertxWebSocketHandler.java:128)\n\tat io.undertow.websockets.vertx.VertxWebSocketHandler.handle(VertxWebSocketHandler.java:54)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)\n\tat io.quarkus.resteasy.runtime.standalone.ResteasyStandaloneRecorder$3.handle(ResteasyStandaloneRecorder.java:187)\n\tat io.quarkus.resteasy.runtime.standalone.ResteasyStandaloneRecorder$3.handle(ResteasyStandaloneRecorder.java:157)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)\n\tat io.quarkus.vertx.web.runtime.VertxWebRecorder$2.handle(VertxWebRecorder.java:159)\n\tat io.quarkus.vertx.web.runtime.VertxWebRecorder$2.handle(VertxWebRecorder.java:143)\n\tat io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)\n\tat io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)\n\tat io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)\n\tat io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.doEnd(BodyHandlerImpl.java:359)\n\tat io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.end(BodyHandlerImpl.java:336)\n\tat io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:276)\n\tat io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:258)\n\tat io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:76)\n\tat io.vertx.core.http.impl.Http2ServerRequest.handleEnd(Http2ServerRequest.java:190)\n\tat io.vertx.core.http.impl.Http2ServerStream.handleEnd(Http2ServerStream.java:212)\n\tat io.vertx.core.http.impl.VertxHttp2Stream.lambda$new$1(VertxHttp2Stream.java:63)\n\tat io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)\n\tat io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134)\n\tat io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:335)\n\tat io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:176)\n\tat io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:141)\n\tat io.vertx.core.http.impl.Http2ServerStream.onEnd(Http2ServerStream.java:137)\n\tat io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:136)\n\tat io.vertx.core.http.impl.Http2ConnectionBase.onDataRead(Http2ConnectionBase.java:317)\n\tat io.vertx.core.http.impl.Http2ServerConnection.onDataRead(Http2ServerConnection.java:38)\n\tat io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)\n\tat io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)\n\tat io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onDataRead(Http2EmptyDataFrameListener.java:49)\n\tat io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:322)\n\tat io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)\n\tat io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)\n\tat io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)\n\tat io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:188)\n\tat io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)\n\tat io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)\n\tat io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)\n\tat io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)\n\tat io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)\n\tat io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)\n\tat io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:411)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n\tat java.base/java.lang.Thread.run(Thread.java:840)"}
	at io.grpc.Status.asRuntimeException(Status.java:537)
	at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:481)
	at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
	at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
	at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
	at io.quarkus.grpc.runtime.supports.IOThreadClientInterceptor$1$1.onClose(IOThreadClientInterceptor.java:72)
	at io.grpc.internal.DelayedClientCall$DelayedListener$3.run(DelayedClientCall.java:489)
	at io.grpc.internal.DelayedClientCall$DelayedListener.delayOrExecute(DelayedClientCall.java:453)
	at io.grpc.internal.DelayedClientCall$DelayedListener.onClose(DelayedClientCall.java:486)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:574)
	at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:72)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializeReentrantCallsDirectExecutor.execute(SerializeReentrantCallsDirectExecutor.java:49)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closedInternal(ClientCallImpl.java:750)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closed(ClientCallImpl.java:690)
	at io.grpc.internal.DelayedStream$DelayedStreamListener$4.run(DelayedStream.java:510)
	at io.grpc.internal.DelayedStream$DelayedStreamListener.delayOrExecute(DelayedStream.java:462)
	at io.grpc.internal.DelayedStream$DelayedStreamListener.closed(DelayedStream.java:507)
	at io.grpc.internal.ForwardingClientStreamListener.closed(ForwardingClientStreamListener.java:34)
	at io.grpc.internal.InternalSubchannel$CallTracingTransport$1$1.closed(InternalSubchannel.java:691)
	at io.grpc.internal.AbstractClientStream$TransportState.closeListener(AbstractClientStream.java:458)
	at io.grpc.internal.AbstractClientStream$TransportState.access$400(AbstractClientStream.java:221)
	at io.grpc.internal.AbstractClientStream$TransportState$1.run(AbstractClientStream.java:441)
	at io.grpc.internal.AbstractClientStream$TransportState.deframerClosed(AbstractClientStream.java:278)
	at io.grpc.internal.Http2ClientStreamTransportState.deframerClosed(Http2ClientStreamTransportState.java:31)
	at io.grpc.internal.MessageDeframer.close(MessageDeframer.java:234)
	at io.grpc.internal.MessageDeframer.closeWhenComplete(MessageDeframer.java:192)
	at io.grpc.internal.AbstractStream$TransportState.closeDeframer(AbstractStream.java:201)
	at io.grpc.internal.AbstractClientStream$TransportState.transportReportStatus(AbstractClientStream.java:444)
	at io.grpc.internal.AbstractClientStream$TransportState.transportReportStatus(AbstractClientStream.java:400)
	at io.grpc.netty.NettyClientStream$TransportState.http2ProcessingFailed(NettyClientStream.java:305)
	at io.grpc.internal.Http2ClientStreamTransportState.transportDataReceived(Http2ClientStreamTransportState.java:137)
	at io.grpc.netty.NettyClientStream$TransportState.transportDataReceived(NettyClientStream.java:341)
	at io.grpc.netty.NettyClientHandler.onDataRead(NettyClientHandler.java:394)
	at io.grpc.netty.NettyClientHandler.access$1100(NettyClientHandler.java:93)
	at io.grpc.netty.NettyClientHandler$FrameListener.onDataRead(NettyClientHandler.java:923)
	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:322)
	at io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onDataRead(Http2InboundFrameLogger.java:48)
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)
	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
	at io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41)
	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:188)
	at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
	at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at [email protected]/java.lang.Thread.run(Thread.java:840)
	Suppressed: java.lang.IllegalStateException: Request has already been read
		at io.vertx.core.http.impl.Http2ServerRequest.checkEnded(Http2ServerRequest.java:209)
		at io.vertx.core.http.impl.Http2ServerRequest.handler(Http2ServerRequest.java:248)
		at io.quarkus.vertx.http.runtime.ResumingRequestWrapper.handler(ResumingRequestWrapper.java:20)
		at io.vertx.core.http.impl.HttpServerRequestWrapper.handler(HttpServerRequestWrapper.java:63)
		at io.vertx.core.http.impl.HttpServerRequestWrapper.handler(HttpServerRequestWrapper.java:45)
		at io.vertx.grpc.common.impl.GrpcReadStreamBase.init(GrpcReadStreamBase.java:75)
		at io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:61)
		at io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:46)
		at io.vertx.grpc.server.impl.GrpcServerImpl.handle(GrpcServerImpl.java:30)
		at io.quarkus.grpc.runtime.GrpcServerRecorder.lambda$buildGrpcServer$0(GrpcServerRecorder.java:209)
		at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)
		at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
		at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)
		at io.quarkus.vertx.http.runtime.options.HttpServerCommonHandlers$1.handle(HttpServerCommonHandlers.java:62)
		at io.quarkus.vertx.http.runtime.options.HttpServerCommonHandlers$1.handle(HttpServerCommonHandlers.java:40)
		at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)
		at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
		at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)
		at io.undertow.websockets.vertx.VertxWebSocketHandler.handle(VertxWebSocketHandler.java:128)
		at io.undertow.websockets.vertx.VertxWebSocketHandler.handle(VertxWebSocketHandler.java:54)
		at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)
		at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
		at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)
		at io.quarkus.resteasy.runtime.standalone.ResteasyStandaloneRecorder$3.handle(ResteasyStandaloneRecorder.java:187)
		at io.quarkus.resteasy.runtime.standalone.ResteasyStandaloneRecorder$3.handle(ResteasyStandaloneRecorder.java:157)
		at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)
		at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
		at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)
		at io.quarkus.vertx.web.runtime.VertxWebRecorder$2.handle(VertxWebRecorder.java:159)
		at io.quarkus.vertx.web.runtime.VertxWebRecorder$2.handle(VertxWebRecorder.java:143)
		at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1285)
		at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:177)
		at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:137)
		at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.doEnd(BodyHandlerImpl.java:359)
		at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.end(BodyHandlerImpl.java:336)
		at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:276)
		at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:258)
		at io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:76)
		at io.vertx.core.http.impl.Http2ServerRequest.handleEnd(Http2ServerRequest.java:190)
		at io.vertx.core.http.impl.Http2ServerStream.handleEnd(Http2ServerStream.java:212)
		at io.vertx.core.http.impl.VertxHttp2Stream.lambda$new$1(VertxHttp2Stream.java:63)
		at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)
		at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134)
		at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:335)
		at io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:176)
		at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:141)
		at io.vertx.core.http.impl.Http2ServerStream.onEnd(Http2ServerStream.java:137)
		at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:136)
		at io.vertx.core.http.impl.Http2ConnectionBase.onDataRead(Http2ConnectionBase.java:317)
		at io.vertx.core.http.impl.Http2ServerConnection.onDataRead(Http2ServerConnection.java:38)
		at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)
		at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)
		at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onDataRead(Http2EmptyDataFrameListener.java:49)
		at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:322)
		at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)
		at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)
		at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
		at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:188)
		at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
		at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
		at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
		at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
		at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
		at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
		at io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:411)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
		at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
		... 15 more

@gsmet
Copy link
Member

gsmet commented Feb 20, 2024

Actually, this is failing in main too. The particular config of this module defeated the build cache algorithm and the tests were not run. We need to fix that.

@ia3andy
Copy link
Contributor

ia3andy commented Feb 21, 2024

@alesj it seems to be related to the codestart itself? Could you try to build it on both Maven and Gradle?

It's yesterday command + --gradle

@alesj
Copy link
Contributor Author

alesj commented Feb 21, 2024

Hmmm, works for me locally, also with Gradle ...

  • quick Quarkus build
  • java -jar ~/.m2/repository/io/quarkus/quarkus-cli/999-SNAPSHOT/quarkus-cli-999-SNAPSHOT-runner.jar create app --extension=io.quarkus:quarkus-grpc -P=io.quarkus:quarkus-bom:999-SNAPSHOT --gradle
  • cd code-with-quarkus
  • ./gradlew quarkusDev
> Task :quarkusDev
io.smallrye.common:smallrye-common-net::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-net/2.2.0/261d912ae8bc78a67df97e69a589f998440f6d1c/smallrye-common-net-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-net/2.3.0/4858c78377802c801d2f9b24141381733b256260/smallrye-common-net-2.3.0.jar
io.smallrye.common:smallrye-common-constraint::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-constraint/2.2.0/73c7b76ba2582b5bd92b0b5300ed85ce5c86d8cb/smallrye-common-constraint-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-constraint/2.3.0/1be18f3663dc7e8a5080039cdd10415ae679544/smallrye-common-constraint-2.3.0.jar
io.smallrye.common:smallrye-common-ref::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-ref/2.2.0/3887e9f5b9c6ab21e6f9d5f71d550ecbdafc620a/smallrye-common-ref-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-ref/2.3.0/8dee03ceb1c5466faaeb5554e045abfffa3df4eb/smallrye-common-ref-2.3.0.jar
io.smallrye.common:smallrye-common-expression::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-expression/2.2.0/efd956fc77a194e2067525587a73c01ed3f18d05/smallrye-common-expression-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-expression/2.3.0/10b4807e36c082607bbd22bd263898c2043bb5f6/smallrye-common-expression-2.3.0.jar
io.smallrye.common:smallrye-common-function::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-function/2.2.0/fa5b3437899e29e29dad719543d05bdd9c5c98a8/smallrye-common-function-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-function/2.3.0/17e2dcd9e238c99a6aaaba0162ba8547bfc8ade3/smallrye-common-function-2.3.0.jar
io.smallrye.common:smallrye-common-cpu::jar classpath entry /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-cpu/2.2.0/b70030308912ce33baafbf9775bba3a5d0c69b00/smallrye-common-cpu-2.2.0.jar was overriden with /Users/alesj/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-cpu/2.3.0/46b679da6b944d7e99fe2c32928978d916770b26/smallrye-common-cpu-2.3.0.jar
Listening for transport dt_socket at address: 5005
Press [e] to edit command line args (currently ''), [h] for more options>
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [h] for more options>
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [h] for more options>
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2024-02-21 11:02:15,024 INFO  [io.qua.grp.run.GrpcServerRecorder] (Quarkus Main Thread) Registering gRPC reflection service
2024-02-21 11:02:15,053 INFO  [io.qua.grp.run.GrpcServerRecorder] (Quarkus Main Thread) Starting new Vert.x gRPC server ...
     2024-02-21 11:02:15,107 INFO  [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 1.031s. Listening on: http://localhost:8080
2024-02-21 11:02:15,108 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2024-02-21 11:02:15,108 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, grpc-server, smallrye-context-propagation, vertx]

<===========--> 90% EXECUTING [27s]
> :quarkusDev

90% ?!

application.properties looks OK ...

alesj@Skywalker code-with-quarkus % cat src/main/resources/application.properties
quarkus.grpc.server.use-separate-server=false
%test.quarkus.grpc.clients.helloGrpc.port=8081
%test.quarkus.grpc.clients.helloGrpc.host=localhost

@alesj
Copy link
Contributor Author

alesj commented Feb 21, 2024

Test(s) also pass ...

Starting test run, 1 tests to run.
Running 1/1. Running: #JUnit Jupiter
Running 1/1. Running: org.acme.HelloGrpcServiceTest#HelloGrpcServiceTest
Running 1/1. Running: org.acme.HelloGrpcServiceTest#testHello()
Press [e] to edit command line args (currently ''), [r] to re-run, [h] for more options>
Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [h] for more options>
All 1 test is passing (0 skipped), 1 test was run in 917ms. Tests completed at 11:08:07.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins kind/bugfix triage/flaky-test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

gRPC starter app is using legacy approach, single HTTP server should be used instead
4 participants