eclipse-vertx/vertx-grpc

Bug when reading metadata

Closed this issue · 2 comments

The recent changs regarding the metadata/trailer seem to be causing issues:

2023-02-13T13:15:31.1187617Z 2023-02-13 13:15:31,036 ERROR [io.qua.ver.cor.run.VertxCoreRecorder] (vert.x-eventloop-thread-1) Uncaught exception received by Vert.x: java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
2023-02-13T13:15:31.1188475Z 	at io.vertx.grpc.common.impl.Utils.readMetadata(Utils.java:34)
2023-02-13T13:15:31.1189648Z 	at io.vertx.grpc.client.VertxClientCall.lambda$null$2(VertxClientCall.java:90)
2023-02-13T13:15:31.1190216Z 	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
2023-02-13T13:15:31.1190754Z 	at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
2023-02-13T13:15:31.1191353Z 	at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
2023-02-13T13:15:31.1192254Z 	at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40)
2023-02-13T13:15:31.1192716Z 	at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
2023-02-13T13:15:31.1193146Z 	at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
2023-02-13T13:15:31.1193585Z 	at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
2023-02-13T13:15:31.1193972Z 	at io.vertx.core.Promise.complete(Promise.java:66)
2023-02-13T13:15:31.1194411Z 	at io.vertx.core.http.impl.HttpClientRequestImpl.handleResponse(HttpClientRequestImpl.java:346)
2023-02-13T13:15:31.1194955Z 	at io.vertx.core.http.impl.HttpClientRequestBase.handleResponse(HttpClientRequestBase.java:182)
2023-02-13T13:15:31.1195481Z 	at io.vertx.core.http.impl.HttpClientRequestBase.lambda$new$0(HttpClientRequestBase.java:71)
2023-02-13T13:15:31.1195926Z 	at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
2023-02-13T13:15:31.1196306Z 	at io.vertx.core.impl.ContextBase.emit(ContextBase.java:239)
2023-02-13T13:15:31.1196736Z 	at io.vertx.core.http.impl.Http2ClientConnection$Stream.onHeaders(Http2ClientConnection.java:331)
2023-02-13T13:15:31.1197244Z 	at io.vertx.core.http.impl.Http2ClientConnection.onHeadersRead(Http2ClientConnection.java:189)
2023-02-13T13:15:31.1197749Z 	at io.vertx.core.http.impl.Http2ConnectionBase.onHeadersRead(Http2ConnectionBase.java:206)
2023-02-13T13:15:31.1198331Z 	at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onHeadersRead(Http2FrameListenerDecorator.java:48)
2023-02-13T13:15:31.1198958Z 	at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onHeadersRead(Http2EmptyDataFrameListener.java:63)
2023-02-13T13:15:31.1199599Z 	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:409)
2023-02-13T13:15:31.1200202Z 	at io.netty.handler.codec.http2.DefaultHttp2FrameReader$1.processFragment(DefaultHttp2FrameReader.java:450)
2023-02-13T13:15:31.1200773Z 	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:457)
2023-02-13T13:15:31.1201603Z 	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:253)
2023-02-13T13:15:31.1202200Z 	at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
2023-02-13T13:15:31.1202797Z 	at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:173)
2023-02-13T13:15:31.1203487Z 	at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
2023-02-13T13:15:31.1204102Z 	at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
2023-02-13T13:15:31.1204641Z 	at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
2023-02-13T13:15:31.1205217Z 	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
2023-02-13T13:15:31.1205789Z 	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
2023-02-13T13:15:31.1206292Z 	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
2023-02-13T13:15:31.1206840Z 	at io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:408)

Can you provide a small reproducer? Even in the form of a small Quarkus app?