Repository: mina-sshd Updated Branches: refs/heads/master 1cd204b7a -> 063038150
[SSHD-786] Mark Nio2Service correctly as disposing when dispose() called Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/94369e0e Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/94369e0e Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/94369e0e Branch: refs/heads/master Commit: 94369e0ed4e68a3274f7de139ad6cf132858ee44 Parents: 1cd204b Author: Goldstein Lyor <[email protected]> Authored: Thu Dec 7 08:30:33 2017 +0200 Committer: Lyor Goldstein <[email protected]> Committed: Tue Dec 19 19:18:35 2017 +0200 ---------------------------------------------------------------------- .../sshd/common/io/nio2/Nio2Acceptor.java | 37 ++++++++++++++------ .../apache/sshd/common/io/nio2/Nio2Service.java | 8 +++-- 2 files changed, 33 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/94369e0e/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java index 66a3c41..ce86aaf 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java @@ -89,8 +89,12 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { @Override public void unbind() { - log.debug("Unbinding"); - unbind(getBoundAddresses()); + Collection<SocketAddress> addresses = getBoundAddresses(); + if (log.isDebugEnabled()) { + log.debug("Unbinding {}", addresses); + } + + unbind(addresses); } @Override @@ -105,7 +109,7 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { channel.close(); } catch (IOException e) { log.warn("unbind({}) {} while unbinding channel: {}", - address, e.getClass().getSimpleName(), e.getMessage()); + address, e.getClass().getSimpleName(), e.getMessage()); if (log.isDebugEnabled()) { log.debug("unbind(" + address + ") failure details", e); } @@ -155,6 +159,11 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { super.doCloseImmediately(); } + @Override + public String toString() { + return getClass().getSimpleName() + "[" + getBoundAddresses() + "]"; + } + protected class AcceptCompletionHandler extends Nio2CompletionHandler<AsynchronousSocketChannel, SocketAddress> { protected final AsynchronousServerSocketChannel socket; @@ -167,6 +176,9 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { protected void onCompleted(AsynchronousSocketChannel result, SocketAddress address) { // Verify that the address has not been unbound if (!channels.containsKey(address)) { + if (log.isDebugEnabled()) { + log.debug("onCompleted({}) unbound address", address); + } return; } @@ -187,7 +199,7 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { try { session.close(); } catch (Throwable t) { - log.warn("Failed (" + t.getClass().getSimpleName() + ")" + log.warn("onCompleted(" + address + ") Failed (" + t.getClass().getSimpleName() + ")" + " to close accepted connection from " + address + ": " + t.getMessage(), t); @@ -223,13 +235,18 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor { return; } - if (!disposing.get()) { - log.warn("Caught " + exc.getClass().getSimpleName() - + " while accepting incoming connection from " + address - + ": " + exc.getMessage(), - exc); - // TODO (SSHD-786) consider closing the channel + if (disposing.get()) { + if (log.isDebugEnabled()) { + log.debug("Caught {} for tracked channel of {} while disposing: {}", + exc.getClass().getSimpleName(), address, exc.getMessage()); + } + return; } + + log.warn("Caught " + exc.getClass().getSimpleName() + + " while accepting incoming connection from " + address + + ": " + exc.getMessage(), + exc); } } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/94369e0e/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java index 763b54c..15d2520 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java @@ -93,6 +93,10 @@ public abstract class Nio2Service extends AbstractInnerCloseable implements IoSe public void dispose() { try { + if (disposing.getAndSet(true)) { + log.warn("dispose({}) already disposing", this); + } + long maxWait = Closeable.getMaxCloseWaitTime(getFactoryManager()); boolean successful = close(true).await(maxWait); if (!successful) { @@ -100,11 +104,11 @@ public abstract class Nio2Service extends AbstractInnerCloseable implements IoSe } } catch (IOException e) { if (log.isDebugEnabled()) { - log.debug(e.getClass().getSimpleName() + " while stopping service: " + e.getMessage()); + log.debug("dispose({}) {} while stopping service: {}", this, e.getClass().getSimpleName(), e.getMessage()); } if (log.isTraceEnabled()) { - log.trace("Stop exception details", e); + log.trace("dispose(" + this + ") Stop exception details", e); } } }
