You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2012/04/10 16:33:02 UTC

svn commit: r1311757 - in /directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap: LdapSession.java handlers/UnbindHandler.java

Author: elecharny
Date: Tue Apr 10 14:33:02 2012
New Revision: 1311757

URL: http://svn.apache.org/viewvc?rev=1311757&view=rev
Log:
Close the pending cursors for pending PagedSearch when the session is unbound

Modified:
    directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapSession.java
    directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/UnbindHandler.java

Modified: directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapSession.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapSession.java?rev=1311757&r1=1311756&r2=1311757&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapSession.java (original)
+++ directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapSession.java Tue Apr 10 14:33:02 2012
@@ -31,6 +31,7 @@ import org.apache.directory.server.core.
 import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.server.ldap.handlers.controls.PagedSearchContext;
+import org.apache.directory.shared.ldap.model.cursor.Cursor;
 import org.apache.directory.shared.ldap.model.message.AbandonableRequest;
 import org.apache.directory.shared.ldap.model.message.BindStatus;
 import org.apache.mina.core.session.IoSession;
@@ -458,6 +459,26 @@ public class LdapSession
         return pagedSearchContexts.remove( contextId );
     }
 
+    
+    /**
+     * Close all the pending cursors for all the pending PagedSearches
+     * 
+     * @throws Exception If we've got an exception.
+     */
+    public void closeAllPagedSearches() throws Exception
+    {
+        for ( int contextId : pagedSearchContexts.keySet() )
+        {
+            PagedSearchContext context = pagedSearchContexts.get( contextId );
+            
+            EntryFilteringCursor cursor = context.getCursor();
+            
+            if ( cursor != null )
+            {
+                cursor.close();
+            }
+        }
+    }
 
     /**
      * Get paged search context associated with an ID 

Modified: directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/UnbindHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/UnbindHandler.java?rev=1311757&r1=1311756&r2=1311757&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/UnbindHandler.java (original)
+++ directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/UnbindHandler.java Tue Apr 10 14:33:02 2012
@@ -45,6 +45,7 @@ public class UnbindHandler extends LdapR
 
         try
         {
+            session.closeAllPagedSearches();
             session.getCoreSession().unbind( unbindRequest );
             session.getIoSession().close( true );
             ldapServer.getLdapSessionManager().removeLdapSession( session.getIoSession() );