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