Protocol buffers 启动grpc服务器时获取IllegalStateException

Protocol buffers 启动grpc服务器时获取IllegalStateException,protocol-buffers,grpc,Protocol Buffers,Grpc,我正在使用grpc进行API开发 到目前为止,我能够创建和访问API 突然,在显示“INFO:Server started.Listening on port 42420”消息大约5秒钟后,我看到这个异常堆栈连续跟踪 我已经部署了这个项目,并在一个GCE实例上启动了服务器。请让我知道这个问题的原因和解决方案,如果有人曾经遇到过 堆栈跟踪: May 11, 2016 7:14:20 AM io.grpc.internal.AbstractServerStream deframeFailed WAR

我正在使用grpc进行API开发

到目前为止,我能够创建和访问API

突然,在显示“INFO:Server started.Listening on port 42420”消息大约5秒钟后,我看到这个异常堆栈连续跟踪

我已经部署了这个项目,并在一个GCE实例上启动了服务器。请让我知道这个问题的原因和解决方案,如果有人曾经遇到过

堆栈跟踪:

May 11, 2016 7:14:20 AM io.grpc.internal.AbstractServerStream deframeFailed
WARNING: Exception processing message
java.lang.IllegalStateException: MessageDeframer is already closed
    at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
    at io.grpc.internal.MessageDeframer.checkNotClosed(MessageDeframer.java:222)
    at io.grpc.internal.MessageDeframer.deframe(MessageDeframer.java:168)
    at io.grpc.internal.AbstractStream.deframe(AbstractStream.java:283)
    at io.grpc.internal.AbstractServerStream.inboundDataReceived(AbstractServerStream.java:199)
    at io.grpc.netty.NettyServerStream.inboundDataReceived(NettyServerStream.java:77)
    at io.grpc.netty.NettyServerHandler.onDataRead(NettyServerHandler.java:234)
    at io.grpc.netty.NettyServerHandler.access$300(NettyServerHandler.java:95)
    at io.grpc.netty.NettyServerHandler$FrameListener.onDataRead(NettyServerHandler.java:443)
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:236)
    at io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onDataRead(Http2InboundFrameLogger.java:46)
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:409)
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:240)
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:147)
    at io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:39)
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:102)
    at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:515)
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:575)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:360)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:155)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:950)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:510)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:467)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:381)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

错误似乎是这样的。问题中的用户遇到异常,原因是客户端正在访问服务,但尚未实现,但存在其他可能的触发器。修复程序几乎已提交,应该在下一个版本中修复。

我遇到了类似的问题,因为在我的服务实现中,我遇到了如下问题:

@Override
public void myMethod(
  //super.myMethod(myRequest, responseObserver);// removing this line resolved my issue.
  ...
  responseObserver.onNext(response); // I had exception here because of the super.myMethod call.
  ...
}
我认为最好调用基本实现,然后执行我的实现。但这似乎不是个好主意

我希望这能节省一些人的时间