directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Lécharny <elecha...@gmail.com>
Subject Re: LdapOperation timeout issue.
Date Thu, 14 Jun 2012 07:00:33 GMT
Le 6/13/12 3:18 PM, Göktürk Gezer a écrit :
> Hi Guys,
Hi Göktürk,
>
> I have a little question with probably quick answers:
>
> * Lets assume LdapServer is issuing some operation through
> DirService.OperationManager. If i change the code in OperationManager to
> obtain a Lock of target Partition which is exclusively owned by other
> thread which is destroying the Partition. What happens then?
Whaouh... A lot of things. When we do a search, we get back a cursor 
that will get data from the partition, and it can take a lot of time. 
But when the cursor has been provided, we are already out of the 
OperationManager. Locking the partition will just freeze the search, and 
I'm not sure it can restart finely. Frankly, for searches, I don't see a 
fine way to resume if the partition has been swapped out and replaced, 
except stopping the operation, and informing the user with the 
appropriate message...

For the other operations (modifications), I do think the best is to 
stack the incoming operations when you have acquired the lock so that 
you can restart them when you are done with the partition, but you at 
least should wait for the ongoing modifications to be completed.
>
>    ->  Does ConcurrentReadWriteLock has some method to cause exception to be
> thrown in Readers. I mean can i issue some kind of Abort on all waiting
> readers when i'm actually destroying its attached object. (Yeah i'm Java
> noob ATM :) )
You can get a list of the Threads actually waiting on the lock : 
|*getQueuedThreads 
<http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html#getQueuedThreads%28%29>*()|

" Returns a collection containing threads that may be waiting to acquire 
either the read or write lock."

>    ->  If this is not possible, does LdapServer's current threading model
> ends the issued operation due to timeout or it just sits there(which would
> be bad)?
We certainly have to abort the operation correctly, by sending a 
LdapMessage with a specific code to inform the users that something went 
wrong.
>
> Regards,
> Gokturk
>


-- 
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com


Mime
View raw message