directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Karasulu <akaras...@apache.org>
Subject Re: Transactions and Search/Cursor
Date Tue, 20 Dec 2011 17:04:12 GMT
On Tue, Dec 20, 2011 at 4:50 PM, Emmanuel Lecharny <elecharny@gmail.com>wrote:

> Hi,
>
> I have added txns support in LdapCoreSessionConnection, but I have some
> issues with searches : the txn has to remain opened until the cursor is
> closed. That means the cursor must retain the txns and that the commit is
> done in the cursor.close() operation.
>
>
We need the connection to register a callback with the cursor. That way
when it is closed we can have the LCSConnection actually close the txn.


> I think we can use the inner ClosureMonitor to do that, but the question
> is what should we do when we get an exception during the search ? I would
> suggest that a search is done this way :
>
> Cursor cursor = null;
> try
> {
>  cursor = connection.search( blah ) // The txn is started and stored into
> the ClosureMonitor
>
>  while (cursor.next())
>  {
>    Entry result = cursor.get();
>    // do whatever is needed with the entry
>  }
> }
> finally
> {
>  cursor.close(); // Here, the cursor holds the current status for the
> search : successful or failure.
>   // If successful, do a commit, otherwise, do a rollback
> }
>
> Does it makes sense ?
>
>
How does the ClosureMonitor fit into this code above? This must be a new
class I guess ... this is the first time I am seeing it. I should take a
look at this code.

-- 
Best Regards,
-- Alex

Mime
View raw message