On Tue, May 12, 2009 at 2:23 PM, Kiran Ayyagari wrote:

Hi Emmanuel,

The below fix would avoid building of a global cursor on a table and moving it to appropriate position and at the same time avoiding iterating on all the values.



 Index: src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java
===================================================================
--- src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java     (revision 766843)

+++ src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndex.java     (working copy)
@@ -475,9 +475,8 @@
      */

     public void drop( Long id ) throws Exception
     {
-        Cursor<Tuple<Long,K>> values = reverse.cursor();
+        Cursor<Tuple<Long,K>> values = reverse.cursor( id );

         Tuple<Long,K> tuple = new Tuple<Long,K>( id, null );
-        values.before( tuple );

         while ( values.next() )
         {


P.S :- thanks to Seelmann and Emmanuel without their identification of problem and
         fix I wouldn't have got this idea.

That's an elegant fix !!!

FYI: We should keep things like this on the dev ML. 

--
Alex Karasulu
My Blog :: http://www.jroller.com/akarasulu/
Apache Directory Server :: http://directory.apache.org
Apache MINA :: http://mina.apache.org