You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/03/13 22:54:09 UTC
svn commit: r922680 - in
/directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api:
LdapConnection.java future/ResponseFuture.java
Author: kayyagari
Date: Sat Mar 13 21:54:08 2010
New Revision: 922680
URL: http://svn.apache.org/viewvc?rev=922680&view=rev
Log:
o fixed an issue with setting the cancel flag on future when user calls on LdapConnection.abandon()
o added a new method in LdapConnection to check if there exists a ResponseFuture for a given request ID
o used the above created method in ResponseFuture.cancel() method to check whether to call LdapConnection.abandon() or not
Modified:
directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java
directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
Modified: directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java
URL: http://svn.apache.org/viewvc/directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java?rev=922680&r1=922679&r2=922680&view=diff
==============================================================================
--- directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java (original)
+++ directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java Sat Mar 13 21:54:08 2010
@@ -942,9 +942,8 @@ public class LdapConnection extends IoHa
// this is a sync operation send cancel signal to the corresponding ResponseFuture
if ( rf != null )
{
- // no need to call cancel on future cause the future inturn calls LdapConnection.abandon( messageId )
- //LOG.debug( "sending cancel signal to future" );
- //rf.cancel( true );
+ LOG.debug( "sending cancel signal to future" );
+ rf.cancel( true );
}
else
{
@@ -3348,4 +3347,16 @@ public class LdapConnection extends IoHa
{
futureMap.clear();
}
+
+
+ /**
+ * checks if there is a ResponseFuture associated with the given message id
+ *
+ * @param messageId ID of the request
+ * @return true if there is a non-null future exists, false otherwise
+ */
+ public boolean doesFutureExistFor( Integer messageId )
+ {
+ return futureMap.get( messageId ) != null;
+ }
}
Modified: directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
URL: http://svn.apache.org/viewvc/directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java?rev=922680&r1=922679&r2=922680&view=diff
==============================================================================
--- directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java (original)
+++ directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java Sat Mar 13 21:54:08 2010
@@ -75,11 +75,18 @@ public class ResponseFuture<R> implement
return cancelled;
}
- // Send an abandonRequest
- connection.abandon( messageId );
+ // set the cancel flag first
+ cancelled = true;
+
+ // Send an abandonRequest only if this future exists
+ if( connection.doesFutureExistFor( messageId ) )
+ {
+ connection.abandon( messageId );
+ }
+ // then clear the queue, cause the might be some incoming messages before this abandon request
+ // hits the server
queue.clear();
- cancelled = true;
return cancelled;
}