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/11 07:30:47 UTC

svn commit: r1324565 [1/2] - in /directory/apacheds/branches/index-work: core-api/src/main/java/org/apache/directory/server/core/api/ core-api/src/main/java/org/apache/directory/server/core/api/filtering/ core-avl/src/main/java/org/apache/directory/ser...

Author: elecharny
Date: Wed Apr 11 05:30:46 2012
New Revision: 1324565

URL: http://svn.apache.org/viewvc?rev=1324565&view=rev
Log:
o Added a dedicated logger for all the cursor open/close operations
o Traced all the openings and closings of cursors

Modified:
    directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/EntryToResponseCursor.java
    directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/BaseEntryFilteringCursor.java
    directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/CursorList.java
    directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/ArrayTreeCursor.java
    directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java
    directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeCursor.java
    directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java
    directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java
    directory/apacheds/branches/index-work/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java
    directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java
    directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/provider/ReplicaJournalCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/EntryCursorAdaptor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/ValueArrayCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/EmptyIndexCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/SingletonIndexCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AllEntriesCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AndCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ChildrenCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EqualityCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/GreaterEqCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/NotCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OneLevelScopeCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OrCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/PresenceCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringCursor.java
    directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/SubtreeScopeCursor.java

Modified: directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/EntryToResponseCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/EntryToResponseCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/EntryToResponseCursor.java (original)
+++ directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/EntryToResponseCursor.java Wed Apr 11 05:30:46 2012
@@ -66,7 +66,7 @@ public class EntryToResponseCursor imple
 
     public EntryToResponseCursor( int messageId, Cursor<Entry> wrapped )
     {
-        LOG_CURSOR.debug( "Creating EntryToResponseCursor " + this );
+        LOG_CURSOR.debug( "Creating EntryToResponseCursor {}", this );
         this.wrapped = wrapped;
         this.messageId = messageId;
     }
@@ -110,14 +110,14 @@ public class EntryToResponseCursor imple
 
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing EntryToResponseCursor " + this );
+        LOG_CURSOR.debug( "Closing EntryToResponseCursor {}", this );
         wrapped.close();
     }
 
 
     public void close( Exception e ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing EntryToResponseCursor " + this );
+        LOG_CURSOR.debug( "Closing EntryToResponseCursor {}", this );
         wrapped.close( e );
     }
 

Modified: directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/BaseEntryFilteringCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/BaseEntryFilteringCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/BaseEntryFilteringCursor.java (original)
+++ directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/BaseEntryFilteringCursor.java Wed Apr 11 05:30:46 2012
@@ -104,7 +104,7 @@ public class BaseEntryFilteringCursor im
      */
     public BaseEntryFilteringCursor( Cursor<Entry> wrapped, SearchingOperationContext operationContext )
     {
-        LOG_CURSOR.debug( "Creating BaseEntryFilteringCursor " + this );
+        LOG_CURSOR.debug( "Creating BaseEntryFilteringCursor {}", this );
         this.wrapped = wrapped;
         this.operationContext = operationContext;
         this.filters = new ArrayList<EntryFilter>();
@@ -123,7 +123,7 @@ public class BaseEntryFilteringCursor im
     public BaseEntryFilteringCursor( Cursor<Entry> wrapped,
         SearchingOperationContext operationContext, List<EntryFilter> filters )
     {
-        LOG_CURSOR.debug( "Creating BaseEntryFilteringCursor " + this );
+        LOG_CURSOR.debug( "Creating BaseEntryFilteringCursor {}", this );
         this.wrapped = wrapped;
         this.operationContext = operationContext;
         this.filters = new ArrayList<EntryFilter>();
@@ -253,7 +253,7 @@ public class BaseEntryFilteringCursor im
      */
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing BaseEntryFilteringCursor " + this );
+        LOG_CURSOR.debug( "Closing BaseEntryFilteringCursor {}", this );
         wrapped.close();
         prefetched = null;
     }
@@ -264,7 +264,7 @@ public class BaseEntryFilteringCursor im
      */
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing BaseEntryFilteringCursor " + this );
+        LOG_CURSOR.debug( "Closing BaseEntryFilteringCursor {}", this );
         wrapped.close( reason );
         prefetched = null;
     }

Modified: directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/CursorList.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/CursorList.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/CursorList.java (original)
+++ directory/apacheds/branches/index-work/core-api/src/main/java/org/apache/directory/server/core/api/filtering/CursorList.java Wed Apr 11 05:30:46 2012
@@ -84,7 +84,7 @@ public class CursorList implements Entry
      */
     public CursorList( int start, List<EntryFilteringCursor> list, int end, SearchingOperationContext searchContext )
     {
-        LOG_CURSOR.debug( "Creating CursorList " + this );
+        LOG_CURSOR.debug( "Creating CursorList {}", this );
         
         if ( list != null )
         {
@@ -447,14 +447,14 @@ public class CursorList implements Entry
 
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing CursorList " + this );
+        LOG_CURSOR.debug( "Closing CursorList {}", this );
         close( null );
     }
 
 
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing CursorList " + this );
+        LOG_CURSOR.debug( "Closing CursorList {}", this );
         closed = true;
 
         for ( Cursor<?> c : list )

Modified: directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/ArrayTreeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/ArrayTreeCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/ArrayTreeCursor.java (original)
+++ directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/ArrayTreeCursor.java Wed Apr 11 05:30:46 2012
@@ -52,7 +52,7 @@ public class ArrayTreeCursor<E> extends 
      */
     public ArrayTreeCursor( ArrayTree<E> array )
     {
-        LOG_CURSOR.debug( "Creating ArrayTreeCursor " + this );
+        LOG_CURSOR.debug( "Creating ArrayTreeCursor {}", this );
         this.array = array;
         position = Position.BEFORE_FIRST;
     }
@@ -305,7 +305,7 @@ public class ArrayTreeCursor<E> extends 
      */
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing ArrayTreeCursor " + this );
+        LOG_CURSOR.debug( "Closing ArrayTreeCursor {}", this );
         super.close();
     }
 
@@ -315,7 +315,7 @@ public class ArrayTreeCursor<E> extends 
      */
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing ArrayTreeCursor " + this );
+        LOG_CURSOR.debug( "Closing ArrayTreeCursor {}", this );
         super.close( reason );
     }
 }

Modified: directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java (original)
+++ directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlSingletonOrOrderedSetCursor.java Wed Apr 11 05:30:46 2012
@@ -53,7 +53,7 @@ public class AvlSingletonOrOrderedSetCur
 
     public AvlSingletonOrOrderedSetCursor( AvlTreeMap<K, V> tree )
     {
-        LOG_CURSOR.debug( "Creating AvlSingletonOrOrderedSetCursor " + this );
+        LOG_CURSOR.debug( "Creating AvlSingletonOrOrderedSetCursor {}", this );
         this.tree = tree;
     }
 
@@ -298,7 +298,7 @@ public class AvlSingletonOrOrderedSetCur
      */
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlSingletonOrOrderedSetCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlSingletonOrOrderedSetCursor {}", this );
         super.close();
     }
 
@@ -308,7 +308,7 @@ public class AvlSingletonOrOrderedSetCur
      */
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlSingletonOrOrderedSetCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlSingletonOrOrderedSetCursor {}", this );
         super.close( reason );
     }
 }

Modified: directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeCursor.java (original)
+++ directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeCursor.java Wed Apr 11 05:30:46 2012
@@ -48,7 +48,7 @@ public class AvlTreeCursor<E> extends Ab
 
     public AvlTreeCursor( AvlTree<E> tree )
     {
-        LOG_CURSOR.debug( "Creating AvlTreeCursor " + this );
+        LOG_CURSOR.debug( "Creating AvlTreeCursor {}", this );
         this.tree = tree;
     }
 
@@ -255,7 +255,7 @@ public class AvlTreeCursor<E> extends Ab
      */
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlTreeCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlTreeCursor {}", this );
         super.close();
     }
 
@@ -265,7 +265,7 @@ public class AvlTreeCursor<E> extends Ab
      */
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlTreeCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlTreeCursor {}", this );
         super.close( reason );
     }
 }

Modified: directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java (original)
+++ directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapNoDupsWrapperCursor.java Wed Apr 11 05:30:46 2012
@@ -44,7 +44,7 @@ public class AvlTreeMapNoDupsWrapperCurs
 
     public AvlTreeMapNoDupsWrapperCursor( AvlSingletonOrOrderedSetCursor<K, V> wrapped )
     {
-        LOG_CURSOR.debug( "Creating AvlTreeMapNoDupsWrapperCursor " + this );
+        LOG_CURSOR.debug( "Creating AvlTreeMapNoDupsWrapperCursor {}", this );
         this.wrapped = wrapped;
     }
 
@@ -148,14 +148,14 @@ public class AvlTreeMapNoDupsWrapperCurs
 
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlTreeMapNoDupsWrapperCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlTreeMapNoDupsWrapperCursor {}", this );
         wrapped.close();
     }
 
 
     public void close( Exception reason ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing AvlTreeMapNoDupsWrapperCursor " + this );
+        LOG_CURSOR.debug( "Closing AvlTreeMapNoDupsWrapperCursor {}", this );
         wrapped.close( reason );
     }
 }

Modified: directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java (original)
+++ directory/apacheds/branches/index-work/core-avl/src/main/java/org/apache/directory/server/core/avltree/KeyTupleAvlCursor.java Wed Apr 11 05:30:46 2012
@@ -54,7 +54,7 @@ public class KeyTupleAvlCursor<K, V> ext
      */
     public KeyTupleAvlCursor( AvlTree<V> avlTree, K key )
     {
-        LOG_CURSOR.debug( "Creating KeyTupleAvlCursor " + this );
+        LOG_CURSOR.debug( "Creating KeyTupleAvlCursor {}", this );
         this.key = key;
         this.wrapped = new AvlTreeCursor<V>( avlTree );
     }
@@ -217,7 +217,7 @@ public class KeyTupleAvlCursor<K, V> ext
      */
     public void close() throws Exception
     {
-        LOG_CURSOR.debug( "Closing KeyTupleAvlCursor " + this );
+        LOG_CURSOR.debug( "Closing KeyTupleAvlCursor {}", this );
         super.close();
 
         if ( wrapped != null )
@@ -232,7 +232,7 @@ public class KeyTupleAvlCursor<K, V> ext
      */
     public void close( Exception cause ) throws Exception
     {
-        LOG_CURSOR.debug( "Closing KeyTupleAvlCursor " + this );
+        LOG_CURSOR.debug( "Closing KeyTupleAvlCursor {}", this );
         super.close( cause );
 
         if ( wrapped != null )

Modified: directory/apacheds/branches/index-work/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java (original)
+++ directory/apacheds/branches/index-work/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java Wed Apr 11 05:30:46 2012
@@ -386,6 +386,7 @@ public class SubentryInterceptor extends
                     nexus.modify( new ModifyOperationContext( session, candidateDn, modifications ) );
                 }
             }
+            
             subentries.close();
         }
         catch ( Exception e )

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsContainerCursor.java Wed Apr 11 05:30:46 2012
@@ -29,6 +29,8 @@ import org.apache.directory.server.i18n.
 import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -41,6 +43,9 @@ import org.apache.directory.shared.ldap.
  */
 public class DupsContainerCursor<K, V> extends AbstractCursor<Tuple<K, DupsContainer<V>>>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The JDBM table we are building a cursor over */
     private final JdbmTable<K, V> table;
 
@@ -68,6 +73,8 @@ public class DupsContainerCursor<K, V> e
      */
     public DupsContainerCursor( JdbmTable<K, V> table ) throws IOException
     {
+        LOG_CURSOR.debug( "Creating DupsContainerCursor {}", this );
+        
         if ( !table.isDupsEnabled() )
         {
             throw new IllegalStateException( I18n.err( I18n.ERR_572 ) );
@@ -376,8 +383,9 @@ public class DupsContainerCursor<K, V> e
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing DupsContainerCursor {}", this );
         super.close();
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 
@@ -387,8 +395,9 @@ public class DupsContainerCursor<K, V> e
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing DupsContainerCursor {}", this );
         super.close( cause );
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DupsCursor.java Wed Apr 11 05:30:46 2012
@@ -41,6 +41,9 @@ class DupsCursor<K, V> extends AbstractC
 {
     private static final Logger LOG = LoggerFactory.getLogger( DupsCursor.class.getSimpleName() );
 
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /**
      * The JDBM backed table this Cursor traverses over.
      */
@@ -83,6 +86,7 @@ class DupsCursor<K, V> extends AbstractC
 
     public DupsCursor( JdbmTable<K, V> table ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating DupsCursor {}", this );
         this.table = table;
         this.containerCursor = new DupsContainerCursor<K, V>( table );
         LOG.debug( "Created on table {}", table );
@@ -281,6 +285,7 @@ class DupsCursor<K, V> extends AbstractC
             valueAvailable = true;
             returnedTuple.setKey( containerTuple.getKey() );
             returnedTuple.setValue( dupsCursor.get() );
+            
             return true;
         }
 
@@ -319,6 +324,7 @@ class DupsCursor<K, V> extends AbstractC
             valueAvailable = true;
             returnedTuple.setKey( containerTuple.getKey() );
             returnedTuple.setValue( dupsCursor.get() );
+            
             return true;
         }
 
@@ -343,6 +349,11 @@ class DupsCursor<K, V> extends AbstractC
          */
         if ( null == dupsCursor || !dupsCursor.previous() )
         {
+            if ( dupsCursor != null )
+            {
+                dupsCursor.close();
+            }
+
             /*
              * If the wrappedCursor cursor has more elements we get the previous
              * key/AvlTree Tuple to work with and get a cursor over it's
@@ -382,6 +393,7 @@ class DupsCursor<K, V> extends AbstractC
 
         returnedTuple.setKey( containerTuple.getKey() );
         returnedTuple.setValue( dupsCursor.get() );
+        
         return valueAvailable = true;
     }
 
@@ -393,8 +405,13 @@ class DupsCursor<K, V> extends AbstractC
          * If the iterator over the values of the current key is null or is
          * extinguished then we need to advance to the next key.
          */
-        if ( null == dupsCursor || !dupsCursor.next() )
+        if ( ( null == dupsCursor ) || !dupsCursor.next() )
         {
+            if ( dupsCursor != null )
+            {
+                dupsCursor.close();
+            }
+            
             /*
              * If the wrappedCursor cursor has more elements we get the next
              * key/AvlTree Tuple to work with and get a cursor over it.
@@ -440,6 +457,7 @@ class DupsCursor<K, V> extends AbstractC
          */
         returnedTuple.setKey( containerTuple.getKey() );
         returnedTuple.setValue( dupsCursor.get() );
+        
         return valueAvailable = true;
     }
 
@@ -463,8 +481,14 @@ class DupsCursor<K, V> extends AbstractC
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing DupsCursor {}", this );
         super.close();
         containerCursor.close();
+        
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
     }
 
 
@@ -474,7 +498,13 @@ class DupsCursor<K, V> extends AbstractC
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing DupsCursor {}", this );
         super.close( cause );
         containerCursor.close( cause );
+        
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close( cause );
+        }
     }
 }

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyBTreeCursor.java Wed Apr 11 05:30:46 2012
@@ -27,6 +27,8 @@ import jdbm.helper.TupleBrowser;
 
 import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -37,6 +39,9 @@ import org.apache.directory.shared.ldap.
  */
 public class KeyBTreeCursor<E> extends AbstractCursor<E>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private final Tuple tuple = new Tuple();
 
     private final BTree btree;
@@ -54,6 +59,7 @@ public class KeyBTreeCursor<E> extends A
      */
     public KeyBTreeCursor( BTree btree, Comparator<E> comparator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating KeyBTreeCursor {}", this );
         this.btree = btree;
         this.comparator = comparator;
     }
@@ -218,6 +224,7 @@ public class KeyBTreeCursor<E> extends A
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing KeyBTreeCursor {}", this );
         super.close();
         this.closeBrowser( browser );
     }
@@ -229,6 +236,7 @@ public class KeyBTreeCursor<E> extends A
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing KeyBTreeCursor {}", this );
         super.close( cause );
         this.closeBrowser( browser );
     }

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleArrayCursor.java Wed Apr 11 05:30:46 2012
@@ -25,6 +25,8 @@ import org.apache.directory.server.i18n.
 import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -36,6 +38,9 @@ import org.apache.directory.shared.ldap.
  */
 public class KeyTupleArrayCursor<K, V> extends AbstractCursor<Tuple<K, V>>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private final ArrayTreeCursor<V> wrapped;
     private final K key;
 
@@ -51,6 +56,7 @@ public class KeyTupleArrayCursor<K, V> e
      */
     public KeyTupleArrayCursor( ArrayTree<V> arrayTree, K key )
     {
+        LOG_CURSOR.debug( "Creating KeyTupleArrayCursor {}", this );
         this.key = key;
         this.wrapped = new ArrayTreeCursor<V>( arrayTree );
     }
@@ -206,4 +212,36 @@ public class KeyTupleArrayCursor<K, V> e
 
         throw new InvalidCursorPositionException();
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void close() throws Exception
+    {
+        LOG_CURSOR.debug( "Closing KeyTupleArrayCursor {}", this );
+        
+        if ( wrapped != null )
+        {
+            wrapped.close();
+        }
+        
+        super.close();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception reason ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing KeyTupleArrayCursor {}", this );
+        
+        if ( wrapped != null )
+        {
+            wrapped.close( reason );
+        }
+        
+        super.close( reason );
+    }
 }

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/KeyTupleBTreeCursor.java Wed Apr 11 05:30:46 2012
@@ -28,6 +28,8 @@ import org.apache.directory.server.i18n.
 import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -39,6 +41,9 @@ import org.apache.directory.shared.ldap.
  */
 public class KeyTupleBTreeCursor<K, V> extends AbstractCursor<Tuple<K, V>>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private final Comparator<V> comparator;
     private final BTree btree;
     private final K key;
@@ -59,6 +64,7 @@ public class KeyTupleBTreeCursor<K, V> e
      */
     public KeyTupleBTreeCursor( BTree btree, K key, Comparator<V> comparator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating KeyTupleBTreeCursor {}", this );
         this.key = key;
         this.btree = btree;
         this.comparator = comparator;
@@ -321,8 +327,9 @@ public class KeyTupleBTreeCursor<K, V> e
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing KeyTupleBTreeCursor {}", this );
         super.close();
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 
@@ -332,8 +339,9 @@ public class KeyTupleBTreeCursor<K, V> e
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing KeyTupleBTreeCursor {}", this );
         super.close( cause );
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 

Modified: directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java (original)
+++ directory/apacheds/branches/index-work/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/NoDupsCursor.java Wed Apr 11 05:30:46 2012
@@ -27,6 +27,8 @@ import org.apache.directory.server.i18n.
 import org.apache.directory.shared.ldap.model.cursor.AbstractCursor;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -39,6 +41,9 @@ import org.apache.directory.shared.ldap.
  */
 class NoDupsCursor<K, V> extends AbstractCursor<Tuple<K, V>>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private final JdbmTable<K, V> table;
 
     private jdbm.helper.Tuple jdbmTuple = new jdbm.helper.Tuple();
@@ -55,6 +60,7 @@ class NoDupsCursor<K, V> extends Abstrac
      */
     public NoDupsCursor( JdbmTable<K, V> table ) throws IOException
     {
+        LOG_CURSOR.debug( "Creating NoDupsCursor {}", this );
         this.table = table;
     }
 
@@ -254,8 +260,9 @@ class NoDupsCursor<K, V> extends Abstrac
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing NoDupsCursor {}", this );
         super.close();
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 
@@ -265,8 +272,9 @@ class NoDupsCursor<K, V> extends Abstrac
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing NoDupsCursor {}", this );
         super.close( cause );
-        this.closeBrowser( browser );
+        closeBrowser( browser );
     }
 
 

Modified: directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/provider/ReplicaJournalCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/provider/ReplicaJournalCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/provider/ReplicaJournalCursor.java (original)
+++ directory/apacheds/branches/index-work/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/provider/ReplicaJournalCursor.java Wed Apr 11 05:30:46 2012
@@ -43,6 +43,9 @@ public class ReplicaJournalCursor extend
     /** Logger for this class */
     private static final Logger LOG = LoggerFactory.getLogger( ReplicaJournalCursor.class );
 
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** the underlying journal's cursor */
     private Cursor<Tuple<String, ReplicaEventMessage>> tupleCursor;
 
@@ -63,6 +66,7 @@ public class ReplicaJournalCursor extend
      */
     public ReplicaJournalCursor( JdbmTable<String, ReplicaEventMessage> journal, String consumerCsn ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating ReplicaJournalCursor {}", this );
         this.journal = journal;
         this.tupleCursor = journal.cursor();
         this.consumerCsn = consumerCsn;
@@ -212,6 +216,7 @@ public class ReplicaJournalCursor extend
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing ReplicaJournalCursor {}", this );
         tupleCursor.close();
         super.close();
     }
@@ -223,6 +228,7 @@ public class ReplicaJournalCursor extend
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing ReplicaJournalCursor {}", this );
         tupleCursor.close();
         super.close( cause );
     }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/EntryCursorAdaptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/EntryCursorAdaptor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/EntryCursorAdaptor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/EntryCursorAdaptor.java Wed Apr 11 05:30:46 2012
@@ -29,6 +29,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.cursor.Cursor;
 import org.apache.directory.shared.ldap.model.cursor.CursorIterator;
 import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -38,12 +40,16 @@ import org.apache.directory.shared.ldap.
  */
 public class EntryCursorAdaptor<ID extends Comparable<ID>> implements Cursor<Entry>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private final AbstractBTreePartition<ID> db;
     private final IndexCursor<ID, Entry, ID> indexCursor;
 
 
     public EntryCursorAdaptor( AbstractBTreePartition<ID> db, IndexCursor<ID, Entry, ID> indexCursor )
     {
+        LOG_CURSOR.debug( "Creating EntryCursorAdaptor {}", this );
         this.db = db;
         this.indexCursor = indexCursor;
     }
@@ -100,21 +106,23 @@ public class EntryCursorAdaptor<ID exten
     }
 
 
-    /* 
-     * @see Cursor#close()
+    /**
+     * {@inheritDoc}}
      */
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing EntryCursorAdaptor {}", this );
         indexCursor.close();
     }
 
 
-    /* 
-     * @see Cursor#close()
+    /**
+     * {@inheritDoc}
      */
-    public void close( Exception e ) throws Exception
+    public void close( Exception cause ) throws Exception
     {
-        indexCursor.close( e );
+        LOG_CURSOR.debug( "Closing EntryCursorAdaptor {}", this );
+        indexCursor.close( cause );
     }
 
 

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/IndexCursorAdaptor.java Wed Apr 11 05:30:46 2012
@@ -24,7 +24,6 @@ import java.util.Iterator;
 
 import org.apache.directory.server.xdbm.AbstractIndexCursor;
 import org.apache.directory.server.xdbm.ForwardIndexEntry;
-import org.apache.directory.server.xdbm.IndexCursor;
 import org.apache.directory.server.xdbm.IndexEntry;
 import org.apache.directory.server.xdbm.ReverseIndexEntry;
 import org.apache.directory.shared.i18n.I18n;
@@ -32,6 +31,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.cursor.Cursor;
 import org.apache.directory.shared.ldap.model.cursor.CursorIterator;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -42,6 +43,9 @@ import org.apache.directory.shared.ldap.
  */
 public class IndexCursorAdaptor<K, O, ID> extends AbstractIndexCursor<K, O, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     @SuppressWarnings("unchecked")
     final Cursor<Tuple> wrappedCursor;
     final ForwardIndexEntry<K, ID> forwardEntry;
@@ -59,6 +63,7 @@ public class IndexCursorAdaptor<K, O, ID
     @SuppressWarnings("unchecked")
     public IndexCursorAdaptor( Cursor<Tuple> wrappedCursor, boolean forwardIndex )
     {
+        LOG_CURSOR.debug( "Creating IndexCursorAdaptor {}", this );
         this.wrappedCursor = wrappedCursor;
 
         if ( forwardIndex )
@@ -160,12 +165,14 @@ public class IndexCursorAdaptor<K, O, ID
 
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing IndexCursorAdaptor {}", this );
         wrappedCursor.close();
     }
 
 
     public void close( Exception reason ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing IndexCursorAdaptor {}", this );
         wrappedCursor.close( reason );
     }
 

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/ValueArrayCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/ValueArrayCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/ValueArrayCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/ValueArrayCursor.java Wed Apr 11 05:30:46 2012
@@ -27,6 +27,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.cursor.Tuple;
 import org.apache.directory.shared.util.exception.NotImplementedException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -36,6 +38,9 @@ import org.apache.directory.shared.util.
  */
 public class ValueArrayCursor<K, V> extends AbstractCursor<Tuple<K, V>>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private static final int BEFORE_FIRST = -1;
 
     private final K key;
@@ -47,6 +52,7 @@ public class ValueArrayCursor<K, V> exte
 
     public ValueArrayCursor( final K key, final V[] values )
     {
+        LOG_CURSOR.debug( "Creating ValueArrayCursor {}", this );
         this.key = key;
         this.tuple.setKey( key );
         this.values = Arrays.asList( values );
@@ -55,6 +61,7 @@ public class ValueArrayCursor<K, V> exte
 
     public ValueArrayCursor( final K key, final List<V> values )
     {
+        LOG_CURSOR.debug( "Creating ValueArrayCursor {}", this );
         this.key = key;
         this.tuple.setKey( key );
         this.values = values;
@@ -199,4 +206,26 @@ public class ValueArrayCursor<K, V> exte
 
         throw new InvalidCursorPositionException( I18n.err( I18n.ERR_701, pos, ( values.size() - 1 ) ) );
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void close() throws Exception
+    {
+        LOG_CURSOR.debug( "Closing ValueArrayCursor {}", this );
+        super.close();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing ValueArrayCursor {}", this );
+        super.close( cause );
+    }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/EmptyIndexCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/EmptyIndexCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/EmptyIndexCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/EmptyIndexCursor.java Wed Apr 11 05:30:46 2012
@@ -21,6 +21,8 @@ package org.apache.directory.server.xdbm
 
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -30,6 +32,15 @@ import org.apache.directory.shared.ldap.
  */
 public class EmptyIndexCursor<K, E, ID> extends AbstractIndexCursor<K, E, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
+    public EmptyIndexCursor()
+    {
+        LOG_CURSOR.debug( "Creating EmptyIndexCursor {}", this );
+    }
+    
+    
     /**
      * {@inheritDoc}
      */
@@ -120,4 +131,24 @@ public class EmptyIndexCursor<K, E, ID> 
     {
         checkNotClosed( "after()" );
     }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void close( ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing EmptyIndexCursor {}", this );
+        super.close();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing EmptyIndexCursor {}", this );
+        super.close( cause );
+    }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/SingletonIndexCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/SingletonIndexCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/SingletonIndexCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/SingletonIndexCursor.java Wed Apr 11 05:30:46 2012
@@ -22,6 +22,8 @@ package org.apache.directory.server.xdbm
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -31,6 +33,9 @@ import org.apache.directory.shared.ldap.
  */
 public class SingletonIndexCursor<V, ID> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private boolean beforeFirst = true;
     private boolean afterLast;
     private boolean onSingleton;
@@ -39,6 +44,7 @@ public class SingletonIndexCursor<V, ID>
 
     public SingletonIndexCursor( IndexEntry<V, ID> singleton )
     {
+        LOG_CURSOR.debug( "Creating SingletonIndexCursor {}", this );
         this.singleton = singleton;
     }
 
@@ -190,4 +196,18 @@ public class SingletonIndexCursor<V, ID>
             throw new InvalidCursorPositionException( I18n.err( I18n.ERR_706 ) );
         }
     }
+
+
+    public void close() throws Exception
+    {
+        LOG_CURSOR.debug( "Closing SingletonIndexCursor {}", this );
+        super.close();
+    }
+
+
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing SingletonIndexCursor {}", this );
+        super.close( cause );
+    }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/impl/avl/AvlTableDupsCursor.java Wed Apr 11 05:30:46 2012
@@ -44,6 +44,9 @@ public class AvlTableDupsCursor<K, V> ex
 {
     private static final Logger LOG = LoggerFactory.getLogger( AvlTableDupsCursor.class.getSimpleName() );
 
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The AVL backed table this Cursor traverses over. */
     private final AvlTable<K, V> table;
 
@@ -83,6 +86,7 @@ public class AvlTableDupsCursor<K, V> ex
      */
     public AvlTableDupsCursor( AvlTable<K, V> table )
     {
+        LOG_CURSOR.debug( "Creating AvlTableDupsCursor {}", this );
         this.table = table;
         this.wrappedCursor = new AvlSingletonOrOrderedSetCursor<K, V>( table.getAvlTreeMap() );
         LOG.debug( "Created on table {}", table.getName() );
@@ -114,6 +118,11 @@ public class AvlTableDupsCursor<K, V> ex
     {
         checkNotClosed( "beforeValue()" );
         wrappedCursor.beforeKey( key );
+        
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
 
         if ( wrappedCursor.next() )
         {
@@ -172,6 +181,12 @@ public class AvlTableDupsCursor<K, V> ex
     public void afterValue( K key, V value ) throws Exception
     {
         checkNotClosed( "afterValue()" );
+
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+
         /*
          * There is a subtle difference between after and before handling
          * with dupicate key values.  Say we have the following tuples:
@@ -220,6 +235,7 @@ public class AvlTableDupsCursor<K, V> ex
             if ( value == null )
             {
                 clearValue();
+                
                 return;
             }
 
@@ -258,6 +274,12 @@ public class AvlTableDupsCursor<K, V> ex
         wrappedCursor.afterLast();
         wrappedTuple.setKey( null );
         wrappedTuple.setValue( null );
+
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+
         dupsCursor = null;
     }
 
@@ -281,6 +303,12 @@ public class AvlTableDupsCursor<K, V> ex
         wrappedCursor.beforeFirst();
         wrappedTuple.setKey( null );
         wrappedTuple.setValue( null );
+
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+
         dupsCursor = null;
     }
 
@@ -292,6 +320,12 @@ public class AvlTableDupsCursor<K, V> ex
     {
         checkNotClosed( "first()" );
         clearValue();
+
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+
         dupsCursor = null;
 
         if ( wrappedCursor.first() )
@@ -317,6 +351,7 @@ public class AvlTableDupsCursor<K, V> ex
             valueAvailable = true;
             returnedTuple.setKey( wrappedTuple.getKey() );
             returnedTuple.setValue( dupsCursor.get() );
+            
             return true;
         }
 
@@ -347,8 +382,12 @@ public class AvlTableDupsCursor<K, V> ex
     {
         checkNotClosed( "last()" );
         clearValue();
-        dupsCursor = null;
-
+        
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+        
         if ( wrappedCursor.last() )
         {
             wrappedTuple.setBoth( wrappedCursor.get() );
@@ -372,6 +411,7 @@ public class AvlTableDupsCursor<K, V> ex
             valueAvailable = true;
             returnedTuple.setKey( wrappedTuple.getKey() );
             returnedTuple.setValue( dupsCursor.get() );
+            
             return true;
         }
 
@@ -385,12 +425,18 @@ public class AvlTableDupsCursor<K, V> ex
     public boolean next() throws Exception
     {
         checkNotClosed( "next()" );
+        
         /*
          * If the cursor over the values of the current key is null or is
          * extinguished then we need to advance to the next key.
          */
         if ( null == dupsCursor || !dupsCursor.next() )
         {
+            if ( dupsCursor != null )
+            {
+                dupsCursor.close();
+            }
+            
             /*
              * If the wrappedCursor cursor has more elements we get the next
              * key/AvlTree Tuple to work with and get a cursor over it.
@@ -421,6 +467,7 @@ public class AvlTableDupsCursor<K, V> ex
             else
             {
                 dupsCursor = null;
+                
                 return false;
             }
         }
@@ -434,6 +481,7 @@ public class AvlTableDupsCursor<K, V> ex
          */
         returnedTuple.setKey( wrappedTuple.getKey() );
         returnedTuple.setValue( dupsCursor.get() );
+        
         return valueAvailable = true;
     }
 
@@ -448,8 +496,13 @@ public class AvlTableDupsCursor<K, V> ex
          * If the cursor over the values of the current key is null or is
          * extinguished then we need to advance to the previous key.
          */
-        if ( null == dupsCursor || !dupsCursor.previous() )
+        if ( ( null == dupsCursor ) || !dupsCursor.previous() )
         {
+            if ( dupsCursor != null )
+            {
+                dupsCursor.close();
+            }
+            
             /*
              * If the wrappedCursor cursor has more elements we get the previous
              * key/AvlTree Tuple to work with and get a cursor over it's
@@ -481,15 +534,44 @@ public class AvlTableDupsCursor<K, V> ex
             else
             {
                 dupsCursor = null;
+                
                 return false;
             }
         }
 
         returnedTuple.setKey( wrappedTuple.getKey() );
         returnedTuple.setValue( dupsCursor.get() );
+        
         return valueAvailable = true;
     }
 
+    
+    public void close() throws Exception
+    {
+        LOG_CURSOR.debug( "Closing AvlTableDupsCursor {}", this );
+        
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+        
+        wrappedCursor.close();
+    }
+
+
+    public void close( Exception reason ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing AvlTableDupsCursor {}", this );
+
+        if ( dupsCursor != null )
+        {
+            dupsCursor.close();
+        }
+
+        wrappedCursor.close();
+    }
+
+
 
     /**
      * Clears the returned Tuple and makes sure valueAvailable returns false.

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AllEntriesCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AllEntriesCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AllEntriesCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AllEntriesCursor.java Wed Apr 11 05:30:46 2012
@@ -26,6 +26,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.server.xdbm.IndexEntry;
 import org.apache.directory.server.xdbm.Store;
 import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -35,6 +37,9 @@ import org.apache.directory.shared.ldap.
  */
 public class AllEntriesCursor<ID extends Comparable<ID>> extends AbstractIndexCursor<ID, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The index entry we use to return entries one by one.  */
     private IndexEntry<ID, ID> indexEntry = new ForwardIndexEntry<ID, ID>();
 
@@ -58,6 +63,7 @@ public class AllEntriesCursor<ID extends
      */
     public AllEntriesCursor( Store<Entry, ID> db ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating AllEntriesCursor {}", this );
         // Get a reverse cursor because we want to sort by ID
         wrapped = db.getEntryUuidIndex().reverseCursor();
     }
@@ -205,6 +211,7 @@ public class AllEntriesCursor<ID extends
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing AllEntriesCursor {}", this );
         wrapped.close();
     }
 
@@ -215,6 +222,7 @@ public class AllEntriesCursor<ID extends
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing AllEntriesCursor {}", this );
         wrapped.close( cause );
     }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AndCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AndCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AndCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/AndCursor.java Wed Apr 11 05:30:46 2012
@@ -32,6 +32,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.filter.ExprNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -41,6 +43,9 @@ import org.apache.directory.shared.ldap.
  */
 public class AndCursor<V, ID> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The message for unsupported operations */
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_707 );
 
@@ -61,6 +66,7 @@ public class AndCursor<V, ID> extends Ab
     public AndCursor( IndexCursor<V, Entry, ID> wrapped,
         List<Evaluator<? extends ExprNode, Entry, ID>> evaluators )
     {
+        LOG_CURSOR.debug( "Creating AndCursor {}", this );
         this.wrapped = wrapped;
         this.evaluators = optimize( evaluators );
     }
@@ -175,18 +181,30 @@ public class AndCursor<V, ID> extends Ab
         throw new InvalidCursorPositionException( I18n.err( I18n.ERR_708 ) );
     }
 
-
+    
     /**
      * {@inheritDoc}
      */
-    public void close() throws Exception
+    public void close( ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing AndCursor {}", this );
         super.close();
         wrapped.close();
     }
 
 
     /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing AndCursor {}", this );
+        super.close( cause );
+        wrapped.close( cause );
+    }
+
+
+    /**
      * Takes a set of Evaluators and copies then sorts them in a new list with
      * increasing scan counts on their expression nodes.  This is done to have
      * the Evaluators with the least scan count which have the highest

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ApproximateCursor.java Wed Apr 11 05:30:46 2012
@@ -30,6 +30,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.entry.Value;
 import org.apache.directory.shared.ldap.model.schema.AttributeType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -45,6 +47,9 @@ import org.apache.directory.shared.ldap.
  */
 public class ApproximateCursor<V, ID extends Comparable<ID>> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The message for unsupported operations */
     private static final String UNSUPPORTED_MSG = "ApproximateCursors only support positioning by element when a user index exists on the asserted attribute.";
 
@@ -67,6 +72,7 @@ public class ApproximateCursor<V, ID ext
     @SuppressWarnings("unchecked")
     public ApproximateCursor( Store<Entry, ID> db, ApproximateEvaluator<V, ID> approximateEvaluator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating ApproximateCursor {}", this );
         this.approximateEvaluator = approximateEvaluator;
 
         AttributeType attributeType = approximateEvaluator.getExpression().getAttributeType();
@@ -318,6 +324,7 @@ public class ApproximateCursor<V, ID ext
      */
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing ApproximateCursor {}", this );
         super.close();
 
         if ( userIdxCursor != null )
@@ -329,4 +336,25 @@ public class ApproximateCursor<V, ID ext
             uuidIdxCursor.close();
         }
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing ApproximateCursor {}", this );
+        super.close( cause );
+
+        if ( userIdxCursor != null )
+        {
+            userIdxCursor.close( cause );
+        }
+        else
+        {
+            uuidIdxCursor.close( cause );
+        }
+    }
+
+
 }
\ No newline at end of file

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ChildrenCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ChildrenCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ChildrenCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/ChildrenCursor.java Wed Apr 11 05:30:46 2012
@@ -27,9 +27,9 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.server.xdbm.IndexEntry;
 import org.apache.directory.server.xdbm.ParentIdAndRdn;
 import org.apache.directory.server.xdbm.Store;
-import org.apache.directory.shared.ldap.model.cursor.Cursor;
-import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -40,6 +40,9 @@ import org.apache.directory.shared.ldap.
  */
 public class ChildrenCursor<ID extends Comparable<ID>> extends AbstractIndexCursor<ID, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** Error message for unsupported operations */
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_719 );
 
@@ -65,6 +68,7 @@ public class ChildrenCursor<ID extends C
     public ChildrenCursor( Store<Entry, ID> db, ID parentId, IndexCursor<ParentIdAndRdn<ID>,Entry, ID> cursor )
         throws Exception
     {
+        LOG_CURSOR.debug( "Creating ChildrenCursor {}", this );
         this.db = db;
         this.parentId = parentId;
         this.cursor = cursor;
@@ -166,6 +170,7 @@ public class ChildrenCursor<ID extends C
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing ChildrenCursor {}", this );
         cursor.close();
 
         super.close();
@@ -175,6 +180,7 @@ public class ChildrenCursor<ID extends C
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing ChildrenCursor {}", this );
         cursor.close( cause );
 
         super.close( cause );

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EqualityCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EqualityCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EqualityCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/EqualityCursor.java Wed Apr 11 05:30:46 2012
@@ -30,6 +30,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.entry.Value;
 import org.apache.directory.shared.ldap.model.schema.AttributeType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -43,6 +45,9 @@ import org.apache.directory.shared.ldap.
  */
 public class EqualityCursor<V, ID extends Comparable<ID>> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** The message for unsupported operations */
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_714 );
 
@@ -65,6 +70,7 @@ public class EqualityCursor<V, ID extend
     @SuppressWarnings("unchecked")
     public EqualityCursor( Store<Entry, ID> db, EqualityEvaluator<V, ID> equalityEvaluator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating EqualityCursor {}", this );
         this.equalityEvaluator = equalityEvaluator;
 
         AttributeType attributeType = equalityEvaluator.getExpression().getAttributeType();
@@ -319,6 +325,7 @@ public class EqualityCursor<V, ID extend
      */
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing EqualityCursor {}", this );
         super.close();
 
         if ( userIdxCursor != null )
@@ -330,4 +337,23 @@ public class EqualityCursor<V, ID extend
             uuidIdxCursor.close();
         }
     }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing EqualityCursor {}", this );
+        super.close( cause );
+        
+        if ( userIdxCursor != null )
+        {
+            userIdxCursor.close( cause );
+        }
+        else
+        {
+            uuidIdxCursor.close( cause );
+        }
+    }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/GreaterEqCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/GreaterEqCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/GreaterEqCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/GreaterEqCursor.java Wed Apr 11 05:30:46 2012
@@ -30,6 +30,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.schema.AttributeType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -43,6 +45,9 @@ import org.apache.directory.shared.ldap.
  */
 public class GreaterEqCursor<V, ID extends Comparable<ID>> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private static final String UNSUPPORTED_MSG = "GreaterEqCursors only support positioning by element when a user index exists on the asserted attribute.";
 
     /** An greater eq evaluator for candidates */
@@ -52,14 +57,14 @@ public class GreaterEqCursor<V, ID exten
     private final IndexCursor<V, Entry, ID> userIdxCursor;
 
     /** NDN Cursor on all entries in  (set when no index on user attribute) */
-    private final IndexCursor<String, Entry, ID> ndnIdxCursor;
+    private final IndexCursor<String, Entry, ID> uuidIdxCursor;
 
     /**
-     * Used to store indexEntry from ndnCandidate so it can be saved after
+     * Used to store indexEntry from uuidCandidate so it can be saved after
      * call to evaluate() which changes the value so it's not referring to
      * the NDN but to the value of the attribute instead.
      */
-    IndexEntry<String, ID> ndnCandidate;
+    private IndexEntry<String, ID> uuidCandidate;
 
 
     /**
@@ -71,6 +76,7 @@ public class GreaterEqCursor<V, ID exten
     @SuppressWarnings("unchecked")
     public GreaterEqCursor( Store<Entry, ID> db, GreaterEqEvaluator<V, ID> greaterEqEvaluator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating GreaterEqCursor {}", this );
         this.greaterEqEvaluator = greaterEqEvaluator;
 
         AttributeType attributeType = greaterEqEvaluator.getExpression().getAttributeType();
@@ -78,11 +84,11 @@ public class GreaterEqCursor<V, ID exten
         if ( db.hasIndexOn( attributeType ) )
         {
             userIdxCursor = ( ( Index<V, Entry, ID> ) db.getIndex( attributeType ) ).forwardCursor();
-            ndnIdxCursor = null;
+            uuidIdxCursor = null;
         }
         else
         {
-            ndnIdxCursor = db.getEntryUuidIndex().forwardCursor();
+            uuidIdxCursor = db.getEntryUuidIndex().forwardCursor();
             userIdxCursor = null;
         }
     }
@@ -272,8 +278,8 @@ public class GreaterEqCursor<V, ID exten
         }
         else
         {
-            ndnIdxCursor.beforeFirst();
-            ndnCandidate = null;
+            uuidIdxCursor.beforeFirst();
+            uuidCandidate = null;
         }
 
         setAvailable( false );
@@ -293,8 +299,8 @@ public class GreaterEqCursor<V, ID exten
         }
         else
         {
-            ndnIdxCursor.afterLast();
-            ndnCandidate = null;
+            uuidIdxCursor.afterLast();
+            uuidCandidate = null;
         }
 
         setAvailable( false );
@@ -351,12 +357,12 @@ public class GreaterEqCursor<V, ID exten
             return setAvailable( false );
         }
 
-        while ( ndnIdxCursor.previous() )
+        while ( uuidIdxCursor.previous() )
         {
             checkNotClosed( "previous()" );
-            ndnCandidate = ndnIdxCursor.get();
+            uuidCandidate = uuidIdxCursor.get();
 
-            if ( greaterEqEvaluator.evaluate( ndnCandidate ) )
+            if ( greaterEqEvaluator.evaluate( uuidCandidate ) )
             {
                 return setAvailable( true );
             }
@@ -382,12 +388,12 @@ public class GreaterEqCursor<V, ID exten
             return setAvailable( userIdxCursor.next() );
         }
 
-        while ( ndnIdxCursor.next() )
+        while ( uuidIdxCursor.next() )
         {
             checkNotClosed( "next()" );
-            ndnCandidate = ndnIdxCursor.get();
+            uuidCandidate = uuidIdxCursor.get();
 
-            if ( greaterEqEvaluator.evaluate( ndnCandidate ) )
+            if ( greaterEqEvaluator.evaluate( uuidCandidate ) )
             {
                 return setAvailable( true );
             }
@@ -417,7 +423,7 @@ public class GreaterEqCursor<V, ID exten
 
         if ( available() )
         {
-            return ( IndexEntry<V, ID> ) ndnCandidate;
+            return ( IndexEntry<V, ID> ) uuidCandidate;
         }
 
         throw new InvalidCursorPositionException( I18n.err( I18n.ERR_708 ) );
@@ -429,6 +435,7 @@ public class GreaterEqCursor<V, ID exten
      */
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing GreaterEqCursor {}", this );
         super.close();
 
         if ( userIdxCursor != null )
@@ -437,7 +444,28 @@ public class GreaterEqCursor<V, ID exten
         }
         else
         {
-            ndnIdxCursor.close();
+            uuidIdxCursor.close();
+            uuidCandidate = null;
+        }
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing GreaterEqCursor {}", this );
+        super.close( cause );
+        
+        if ( userIdxCursor != null )
+        {
+            userIdxCursor.close( cause );
+        }
+        else
+        {
+            uuidIdxCursor.close( cause );
+            uuidCandidate = null;
         }
     }
 }
\ No newline at end of file

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java Wed Apr 11 05:30:46 2012
@@ -30,6 +30,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.schema.AttributeType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -43,6 +45,9 @@ import org.apache.directory.shared.ldap.
  */
 public class LessEqCursor<V, ID extends Comparable<ID>> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_716 );
 
     /** An less eq evaluator for candidates */
@@ -55,16 +60,17 @@ public class LessEqCursor<V, ID extends 
     private final IndexCursor<V, Entry, ID> uuidIdxCursor;
 
     /**
-     * Used to store indexEntry from ndnCandidate so it can be saved after
+     * Used to store indexEntry from uudCandidate so it can be saved after
      * call to evaluate() which changes the value so it's not referring to
-     * the NDN but to the value of the attribute instead.
+     * the UUID but to the value of the attribute instead.
      */
-    IndexEntry<V, ID> ndnCandidate;
+    private IndexEntry<V, ID> uuidCandidate;
 
 
     @SuppressWarnings("unchecked")
     public LessEqCursor( Store<Entry, ID> db, LessEqEvaluator<V, ID> lessEqEvaluator ) throws Exception
     {
+        LOG_CURSOR.debug( "Creating LessEqCursor {}", this );
         this.lessEqEvaluator = lessEqEvaluator;
 
         AttributeType attributeType = lessEqEvaluator.getExpression().getAttributeType();
@@ -281,7 +287,7 @@ public class LessEqCursor<V, ID extends 
         else
         {
             uuidIdxCursor.beforeFirst();
-            ndnCandidate = null;
+            uuidCandidate = null;
         }
 
         setAvailable( false );
@@ -301,7 +307,7 @@ public class LessEqCursor<V, ID extends 
         else
         {
             uuidIdxCursor.afterLast();
-            ndnCandidate = null;
+            uuidCandidate = null;
         }
 
         setAvailable( false );
@@ -339,14 +345,14 @@ public class LessEqCursor<V, ID extends 
         while ( uuidIdxCursor.previous() )
         {
             checkNotClosed( "previous()" );
-            ndnCandidate = uuidIdxCursor.get();
-            if ( lessEqEvaluator.evaluate( ndnCandidate ) )
+            uuidCandidate = uuidIdxCursor.get();
+            if ( lessEqEvaluator.evaluate( uuidCandidate ) )
             {
                 return setAvailable( true );
             }
             else
             {
-                ndnCandidate = null;
+                uuidCandidate = null;
             }
         }
 
@@ -384,15 +390,15 @@ public class LessEqCursor<V, ID extends 
         while ( uuidIdxCursor.next() )
         {
             checkNotClosed( "next()" );
-            ndnCandidate = uuidIdxCursor.get();
+            uuidCandidate = uuidIdxCursor.get();
 
-            if ( lessEqEvaluator.evaluate( ndnCandidate ) )
+            if ( lessEqEvaluator.evaluate( uuidCandidate ) )
             {
                 return setAvailable( true );
             }
             else
             {
-                ndnCandidate = null;
+                uuidCandidate = null;
             }
         }
 
@@ -416,7 +422,7 @@ public class LessEqCursor<V, ID extends 
 
         if ( available() )
         {
-            return ndnCandidate;
+            return uuidCandidate;
         }
 
         throw new InvalidCursorPositionException( I18n.err( I18n.ERR_708 ) );
@@ -425,6 +431,7 @@ public class LessEqCursor<V, ID extends 
 
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing LessEqCursor {}", this );
         super.close();
 
         if ( userIdxCursor != null )
@@ -434,7 +441,27 @@ public class LessEqCursor<V, ID extends 
         else
         {
             uuidIdxCursor.close();
-            ndnCandidate = null;
+            uuidCandidate = null;
+        }
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing LessEqCursor {}", this );
+        super.close( cause );
+        
+        if ( userIdxCursor != null )
+        {
+            userIdxCursor.close( cause );
+        }
+        else
+        {
+            uuidIdxCursor.close( cause );
+            uuidCandidate = null;
         }
     }
 }
\ No newline at end of file

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/NotCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/NotCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/NotCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/NotCursor.java Wed Apr 11 05:30:46 2012
@@ -29,6 +29,8 @@ import org.apache.directory.server.xdbm.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.filter.ExprNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -38,6 +40,9 @@ import org.apache.directory.shared.ldap.
  */
 public class NotCursor<V, ID extends Comparable<ID>> extends AbstractIndexCursor<V, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_718 );
     private final IndexCursor<V, Entry, ID> uuidCursor;
     private final Evaluator<? extends ExprNode, Entry, ID> childEvaluator;
@@ -47,6 +52,7 @@ public class NotCursor<V, ID extends Com
     public NotCursor( Store<Entry, ID> store, Evaluator<? extends ExprNode, Entry, ID> childEvaluator )
         throws Exception
     {
+        LOG_CURSOR.debug( "Creating NotCursor {}", this );
         this.childEvaluator = childEvaluator;
         this.uuidCursor = ( IndexCursor<V, Entry, ID> ) store.getEntryUuidIndex().forwardCursor();
     }
@@ -142,7 +148,16 @@ public class NotCursor<V, ID extends Com
 
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing NotCursor {}", this );
         super.close();
         uuidCursor.close();
     }
+
+
+    public void close( Exception cause ) throws Exception
+    {
+        LOG_CURSOR.debug( "Closing NotCursor {}", this );
+        super.close( cause );
+        uuidCursor.close( cause );
+    }
 }

Modified: directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OneLevelScopeCursor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OneLevelScopeCursor.java?rev=1324565&r1=1324564&r2=1324565&view=diff
==============================================================================
--- directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OneLevelScopeCursor.java (original)
+++ directory/apacheds/branches/index-work/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/search/impl/OneLevelScopeCursor.java Wed Apr 11 05:30:46 2012
@@ -31,6 +31,8 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.name.Rdn;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -41,6 +43,9 @@ import org.apache.directory.shared.ldap.
  */
 public class OneLevelScopeCursor<ID extends Comparable<ID>> extends AbstractIndexCursor<ID, Entry, ID>
 {
+    /** A dedicated log for cursors */
+    private static final Logger LOG_CURSOR = LoggerFactory.getLogger( "CURSOR" );
+
     /** Error message for unsupported operations */
     private static final String UNSUPPORTED_MSG = I18n.err( I18n.ERR_719 );
 
@@ -72,6 +77,7 @@ public class OneLevelScopeCursor<ID exte
     public OneLevelScopeCursor( Store<Entry, ID> db, OneLevelScopeEvaluator<Entry, ID> evaluator )
         throws Exception
     {
+        LOG_CURSOR.debug( "Creating OneLevelScopeCursor {}", this );
         this.db = db;
         this.evaluator = evaluator;
 
@@ -294,6 +300,13 @@ public class OneLevelScopeCursor<ID exte
     @Override
     public void close() throws Exception
     {
+        LOG_CURSOR.debug( "Closing OneLevelScopeCursor {}", this );
+        
+        if ( cursor != null )
+        {
+            cursor.close();
+        }
+        
         scopeCursor.close();
 
         if ( dereferencedCursor != null )
@@ -308,6 +321,13 @@ public class OneLevelScopeCursor<ID exte
     @Override
     public void close( Exception cause ) throws Exception
     {
+        LOG_CURSOR.debug( "Closing OneLevelScopeCursor {}", this );
+        
+        if ( cursor != null )
+        {
+            cursor.close( cause );
+        }
+
         scopeCursor.close( cause );
 
         if ( dereferencedCursor != null )