[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