Skip to content

Missing iterator() implementation in AbstractHttp2Headers #10837

@bswami50

Description

@bswami50

Hi,

This looks like a different flavor of an earlier issue. The iterator method used here seems to be unimplemented here

Is it possible to provide a fix or workaround for this?

What version of gRPC-Java are you using?

Using grpc-netty-1.30.2 with Netty 4.1.104.Final.

What is your environment?

Linux

What did you expect to see?

No failures on upgrade from Netty 4.1.100.Final

What did you see instead?

Crash with stack trace as below

Steps to reproduce the bug

io.grpc.StatusRuntimeException: UNKNOWN
#011at io.grpc.stub.ClientCalls.toStatusRuntimeException(Unknown Source) ~[grpc-stub-1.30.2.jar:?]
#011at io.grpc.stub.ClientCalls.getUnchecked(Unknown Source) ~[grpc-stub-1.30.2.jar:?]
#011at io.grpc.stub.ClientCalls.blockingUnaryCall(Unknown Source) ~[grpc-stub-1.30.2.jar:?]
// application code redacted
#011at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
#011at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
#011at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.UnsupportedOperationException
#011at io.grpc.netty.AbstractHttp2Headers.iterator(Unknown Source) ~[grpc-netty-1.30.2.jar:?]
#011at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:425) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:352) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onHeadersRead(Http2InboundFrameLogger.java:56) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2FrameReader$2.processFragment(DefaultHttp2FrameReader.java:476) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:484) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:253) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:188) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453) ~[netty-codec-http2-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468) ~[netty-codec-4.1.jar:4.1.104.Final]
#011at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[netty-codec-4.1.jar:4.1.104.Final]
#011at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.jar:4.1.104.Final]
#011at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[netty-transport-classes-epoll-4.1.jar:4.1.104.Final]
#011at io.netty.channel.epoll.EpollDomainSocketChannel$EpollDomainUnsafe.epollInReady(EpollDomainSocketChannel.java:140) ~[netty-transport-classes-epoll-4.1.jar:4.1.104.Final]
#011at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) ~[netty-transport-classes-epoll-4.1.jar:4.1.104.Final]
#011at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[netty-transport-classes-epoll-4.1.jar:4.1.104.Final]
#011at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.jar:4.1.104.Final]
#011at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.jar:4.1.104.Final]
#011at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.jar:4.1.104.Final]

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions