Проблемы с открытием / закрытием Netty соединений (каналов) - PullRequest
0 голосов
/ 23 ноября 2011

Я использую 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)

1 Ответ

0 голосов
/ 01 декабря 2011

Глядя из этого:

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 не поддерживает полузакрытое соединение, поэтому соединение будет закрыто, если удаленный узел закрыл только половину соединения.

...