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 2010/05/20 04:25:57 UTC

svn commit: r946511 - /directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java

Author: elecharny
Date: Thu May 20 02:25:57 2010
New Revision: 946511

URL: http://svn.apache.org/viewvc?rev=946511&view=rev
Log:
Changed the nbEntries to be an AtomicInteger, removed the synchronization around the getSize() method.

Modified:
    directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java

Modified: directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java?rev=946511&r1=946510&r2=946511&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java (original)
+++ directory/apacheds/trunk/jdbm/src/main/java/jdbm/btree/BTree.java Thu May 20 02:25:57 2010
@@ -53,6 +53,7 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.util.Comparator;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.directory.server.i18n.I18n;
 
@@ -127,7 +128,7 @@ public class BTree<K, V> implements Exte
     protected int pageSize;
 
     /** Total number of entries in the BTree */
-    protected int nbEntries;
+    protected AtomicInteger nbEntries;
 
     /** Serializer used for BPages of this tree */
     private transient BPage<K, V> bpageSerializer;
@@ -185,6 +186,9 @@ public class BTree<K, V> implements Exte
     }
     
     
+    /**
+     * The real BTree constructor.
+     */
     private void createInstance(RecordManager recman, Comparator<?> comparator, Serializer keySerializer,
         Serializer valueSerializer, int pageSize) throws IOException
     {
@@ -226,6 +230,8 @@ public class BTree<K, V> implements Exte
         this.pageSize = pageSize;
         this.bpageSerializer = new BPage<K, V>();
         this.bpageSerializer.btree = this;
+        this.nbEntries = new AtomicInteger( 0 );
+
         this.recordId = recman.insert( this );
     }
 
@@ -285,7 +291,7 @@ public class BTree<K, V> implements Exte
             rootPage = new BPage<K, V>( this, key, value );
             rootId = rootPage.recid;
             bTreeHeight = 1;
-            nbEntries = 1;
+            nbEntries.set( 1 );
             recordManager.update( recordId, this );
             
             return null;
@@ -311,7 +317,7 @@ public class BTree<K, V> implements Exte
             
             if ( insert.existing == null )
             {
-                nbEntries++;
+                nbEntries.getAndIncrement();
                 dirty = true;
             }
             
@@ -369,7 +375,7 @@ public class BTree<K, V> implements Exte
         
         if ( remove.value != null )
         {
-            nbEntries--;
+            nbEntries.getAndDecrement();
             dirty = true;
         }
         
@@ -513,9 +519,9 @@ public class BTree<K, V> implements Exte
     /**
      * Return the number of entries (size) of the BTree.
      */
-    public synchronized int size()
+    public int size()
     {
-        return nbEntries;
+        return nbEntries.get();
     }
 
 
@@ -557,7 +563,7 @@ public class BTree<K, V> implements Exte
         bTreeHeight = in.readInt();
         rootId = in.readLong();
         pageSize = in.readInt();
-        nbEntries = in.readInt();
+        nbEntries.set( in.readInt() );
     }
 
 
@@ -572,7 +578,7 @@ public class BTree<K, V> implements Exte
         out.writeInt( bTreeHeight );
         out.writeLong( rootId );
         out.writeInt( pageSize );
-        out.writeInt( nbEntries );
+        out.writeInt( nbEntries.get() );
     }