Netty - “Future.operationComplete”在空闲超时处理程序中以SSL模式运行时从未调用过

时间:2012-09-13 19:49:17

标签: ssl netty future

我们已实施以下channelIdle实施。

public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) 
    throws Exception {

    Response response = business.getResponse();

    final Channel channel = e.getChannel();

    ChannelFuture channelFuture
            = Channels.write(
               channel, 
               ChannelBuffers.wrappedBuffer(response.getXML().getBytes())
    );

    if (response.shouldDisconnect()) {// returns true and listener _is_ added.
        channelFuture.addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                channel.close(); // never gets called :(
            }
        });
    }
}

在非SSL模式下运行时,按预期工作。

但是,在启用SSL的情况下运行时,operationComplete方法永远不会被调用。我们已经在各种机器上验证过几次。空闲超时多次发生,但未调用operationComplete。我们没有看到任何异常被抛出。

我试过通过代码来查看应该调用operationComplete的位置,但它很复杂,而且我还没弄清楚。

future = succeededFuture(channel);中有一个SslHandler.wrap()来电,但我不知道这是否意味着什么。从wrap返回的未来从未在SslHandler代码的其他地方使用过。

1 个答案:

答案 0 :(得分:0)

这听起来像个错误..是否可以编写一个简单的“测试用例”来显示问题,并在我们的github问题跟踪器中打开一个问题[1]。

请务必解释它是否一直发生或仅在有时发生等等。

[1] https://github.com/netty/netty/issues