[prev in list] [next in list] [prev in thread] [next in thread]
List: mina-commits
Subject: [mina-sshd] 02/02: [SSHD-907] Delay session/channel attributes clearance until after session signall
From: lgoldstein () apache ! org
Date: 2019-03-21 6:07:43
Message-ID: 20190321060741.B684385080 () gitbox ! apache ! org
[Download RAW message or body]
This is an automated email from the ASF dual-hosted git repository.
lgoldstein pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit 43548b4f4879b2483624bb9a9911e8c2125c0336
Author: Lyor Goldstein <lgoldstein@apache.org>
AuthorDate: Mon Mar 18 20:11:21 2019 +0200
[SSHD-907] Delay session/channel attributes clearance until after session \
signalled as closed
---
.../apache/sshd/common/util/closeable/AbstractInnerCloseable.java | 6 ++++--
.../main/java/org/apache/sshd/common/channel/AbstractChannel.java | 6 +++---
.../org/apache/sshd/common/session/helpers/AbstractSession.java | 6 +++---
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/util/closeable/AbstractInnerCloseable.java \
b/sshd-common/src/main/java/org/apache/sshd/common/util/closeable/AbstractInnerCloseable.java
index 6518d23..282b6c9 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/util/closeable/AbstractInnerCloseable.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/util/closeable/AbstractInnerCloseable.java
@@ -37,12 +37,14 @@ public abstract class AbstractInnerCloseable extends \
AbstractCloseable {
@Override
protected final CloseFuture doCloseGracefully() {
- return getInnerCloseable().close(false);
+ Closeable innerCloser = getInnerCloseable();
+ return innerCloser.close(false);
}
@Override
@SuppressWarnings("synthetic-access")
protected final void doCloseImmediately() {
- getInnerCloseable().close(true).addListener(future -> \
AbstractInnerCloseable.super.doCloseImmediately()); + Closeable innerCloser = \
getInnerCloseable(); + innerCloser.close(true).addListener(future -> \
AbstractInnerCloseable.super.doCloseImmediately()); }
}
\ No newline at end of file
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java \
b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java index \
8850b8b..befc90a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -556,7 +556,7 @@ public abstract class AbstractChannel
@Override
protected Closeable getInnerCloseable() {
- return builder()
+ Closeable closer = builder()
.sequential(new GracefulChannelCloseable(), getExecutorService())
.run(toString(), () -> {
if (service != null) {
@@ -564,6 +564,8 @@ public abstract class AbstractChannel
}
})
.build();
+ closer.addCloseFutureListener(future -> clearAttributes());
+ return closer;
}
public class GracefulChannelCloseable extends IoBaseCloseable {
@@ -694,8 +696,6 @@ public abstract class AbstractChannel
} finally {
// clear the listeners since we are closing the channel (quicker GC)
this.channelListeners.clear();
- // clear the attributes since we close the channel
- clearAttributes();
}
IOException err = IoUtils.closeQuietly(getLocalWindow(), getRemoteWindow());
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java \
b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java \
index 6b5b89e..b137681 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
@@ -733,10 +733,12 @@ public abstract class AbstractSession extends SessionHelper {
@Override
protected Closeable getInnerCloseable() {
- return builder()
+ Closeable closer = builder()
.parallel(toString(), getServices())
.close(getIoSession())
.build();
+ closer.addCloseFutureListener(future -> clearAttributes());
+ return closer;
}
@Override
@@ -766,8 +768,6 @@ public abstract class AbstractSession extends SessionHelper {
this.sessionListeners.clear();
this.channelListeners.clear();
this.tunnelListeners.clear();
- // clear the attributes since we close the session
- clearAttributes();
}
super.preClose();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic