Проблемы с открытием/закрытием zumbi-соединений Netty (каналов)

Я использую Netty 3.2.4 и пытаюсь отлаживать свое приложение, чтобы устранить ошибку, но я понял, что после того, как я запускаю свое приложение с Netty, каждые 2 секунды я получаю открытие/закрытие соединения (канала) из «ниоткуда». ".

Я выдал новое исключение, чтобы получить трассировку стека, чтобы узнать, откуда она взялась, и я вижу, что работает класс «DeadLockProofWorker $ 1», согласно следующей трассировке стека.

Откуда это взялось? Почему? Можно ли было этого избежать?

java.lang.Exception
    at org.spcbrasil.commbroker.server.handler.CleanUpServerHandler.channelClosed(CleanUpServerHandler.java:26)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:118)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
    at org.jboss.netty.channel.SimpleChannelHandler.channelClosed(SimpleChannelHandler.java:228)
    at org.spcbrasil.commbroker.server.handler.CommBrokerServiceHandler.channelClosed(CommBrokerServiceHandler.java:79)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:118)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
    at org.jboss.netty.channel.SimpleChannelHandler.channelClosed(SimpleChannelHandler.java:228)
    at org.spcbrasil.commbroker.server.handler.LogServerHandler.channelClosed(LogServerHandler.java:145)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:118)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.channelClosed(SimpleChannelUpstreamHandler.java:208)
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:98)
    at org.spcbrasil.commbroker.server.handler.HandshakeStopServerHandler.handleUpstream(HandshakeStopServerHandler.java:28)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
    at org.jboss.netty.channel.SimpleChannelHandler.channelClosed(SimpleChannelHandler.java:228)
    at org.spcbrasil.commbroker.server.handler.HandshakeServerHandler.channelClosed(HandshakeServerHandler.java:107)
    at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:118)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
    at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:66)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
    at org.jboss.netty.channel.Channels.fireChannelClosed(Channels.java:404)
    at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:593)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:355)
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

person danieldestro    schedule 23.11.2011    source источник


Ответы (1)


Судя по этому:

at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:593)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:355)

Удаленный узел закрыл соединение. Использует ли ваш удаленный узел полузакрытое соединение? Netty не поддерживает полузакрытое соединение, поэтому соединение будет закрыто, если удаленный узел закроет только половину соединения.

person trustin    schedule 01.12.2011