Updated Branches:
  refs/heads/trunk 8e003d842 -> 377da747b

Expire entries out of ThriftSessionManager
patch by jasobrown; reviewed by jbellis for CASSANDRA-5719


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cc9ac827
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cc9ac827
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cc9ac827

Branch: refs/heads/trunk
Commit: cc9ac8277db09058823d7b9599219324e49e9f51
Parents: 56c9d2f
Author: Jason Brown <[email protected]>
Authored: Wed Jul 3 04:38:12 2013 -0700
Committer: Jason Brown <[email protected]>
Committed: Fri Jul 5 21:56:42 2013 -0700

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 +-
 src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java    | 6 +++++-
 .../cassandra/thrift/TCustomNonblockingServerSocket.java       | 2 --
 src/java/org/apache/cassandra/thrift/ThriftSessionManager.java | 6 ++++++
 4 files changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/cc9ac827/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 843bb53..fa4df36 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,7 +6,7 @@
  * Race condition in detecting version on a mixed 1.1/1.2 cluster
    (CASSANDRA-5692)
  * Fix skipping range tombstones with reverse queries (CASSANDRA-5712)
-
+ * Expire entries out of ThriftSessionManager (CASSANRDA-5719)
 
 1.2.6
  * Fix tracing when operation completes before all responses arrive 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/cc9ac827/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java 
b/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java
index a199a27..7b9a563 100644
--- a/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java
+++ b/src/java/org/apache/cassandra/thrift/CustomTHsHaServer.java
@@ -314,8 +314,12 @@ public class CustomTHsHaServer extends TNonblockingServer
         {
             FrameBuffer buffer = (FrameBuffer) key.attachment();
             if (buffer != null)
+            {
                 buffer.close();
-            // cancel the selection key
+                TNonblockingSocket socket = (TNonblockingSocket) buffer.trans_;
+                if (socket != null)
+                    
ThriftSessionManager.instance.connectionComplete(socket.getSocketChannel().socket().getRemoteSocketAddress());
+            }
             key.cancel();
         }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/cc9ac827/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java 
b/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java
index 779084a..63466b8 100644
--- a/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java
+++ b/src/java/org/apache/cassandra/thrift/TCustomNonblockingServerSocket.java
@@ -49,8 +49,6 @@ public class TCustomNonblockingServerSocket extends 
TNonblockingServerSocket
         if (tsocket == null || tsocket.getSocketChannel() == null)
             return tsocket;
         Socket socket = tsocket.getSocketChannel().socket();
-        // Any existing connection we had from this remote socket must be done 
now, so reset it
-        
ThriftSessionManager.instance.connectionComplete(socket.getRemoteSocketAddress());
         try
         {
             socket.setKeepAlive(this.keepAlive);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/cc9ac827/src/java/org/apache/cassandra/thrift/ThriftSessionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/ThriftSessionManager.java 
b/src/java/org/apache/cassandra/thrift/ThriftSessionManager.java
index 93d58ed..bbc4bff 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftSessionManager.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftSessionManager.java
@@ -21,6 +21,9 @@ import java.net.SocketAddress;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * Encapsulates the current client state (session).
  *
@@ -29,6 +32,7 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 public class ThriftSessionManager
 {
+    private static final Logger logger = 
LoggerFactory.getLogger(ThriftSessionManager.class);
     public final static ThriftSessionManager instance = new 
ThriftSessionManager();
 
     private final ThreadLocal<SocketAddress> remoteSocket = new 
ThreadLocal<SocketAddress>();
@@ -66,5 +70,7 @@ public class ThriftSessionManager
     {
         assert socket != null;
         activeSocketSessions.remove(socket);
+        if (logger.isTraceEnabled())
+            logger.trace("ClientState removed for socket addr {}", socket);
     }
 }

Reply via email to