当我在ChannelHandlerContext上调用close()时,不会调用channelInactive()

时间:2017-06-22 14:09:20

标签: java netty

我们一直在使用netty-handler 4.0.28.Final。我们有一个测试,我们将无效的xml写入测试通道。如下所示,将调用ctx.close()并触发channelInactive。

@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable exc) {
    if (connectionListener == null) {
        return;
    }

    // Treat unexpected exceptions as fatal to the connection
    try {
        connectionListener.connectionError(exc);
    } finally {
        ctx.close();
    }
}

@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
    if (connectionListener == null) {
        return;
    }
    connectionListener.connectionClosed();
}

我的任务是将netty更新为netty-all 4.1.11.Final。自更新以来,未调用channelInactive。 (只有在整理过程中我们在EmbeddedChannel上调用finish()时才会调用。)

为什么在调用ctx.close()时不再调用channelInactive?

1 个答案:

答案 0 :(得分:0)

这是一个错误,将在下一个版本中修复。

请参阅https://github.com/netty/netty/pull/6897