You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2014/08/30 18:22:23 UTC

svn commit: r1621483 - in /directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree: AbstractValueHolder.java InMemoryValueHolder.java PersistedValueHolder.java

Author: kayyagari
Date: Sat Aug 30 16:22:23 2014
New Revision: 1621483

URL: http://svn.apache.org/r1621483
Log:
fixed the way sub-btree is built

Modified:
    directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java
    directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java
    directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java

Modified: directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java?rev=1621483&r1=1621482&r2=1621483&view=diff
==============================================================================
--- directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java (original)
+++ directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java Sat Aug 30 16:22:23 2014
@@ -273,7 +273,18 @@ import org.apache.directory.mavibot.btre
      */
     protected abstract void createSubTree();
 
+    
+    /**
+     * Constructs the sub-BTree using bulkload instead of performing sequential inserts.
+     * 
+     * @param btree the sub-BTtree to be constructed
+     * @param dupKeyValues the array of values to be inserted as keys
+     * @return
+     * @throws Exception
+     */
+    protected abstract BTree buildSubBTree( BTree<V, V> btree, V[] dupKeyValues ) throws Exception;
 
+    
     /**
      * Add the value in an array
      */
@@ -287,13 +298,8 @@ import org.apache.directory.mavibot.btre
 
             try
             {
-                for ( V val : valueArray )
-                {
-                    // Here, we should insert all the values in one shot then 
-                    // write the btree on disk only once.
-                    valueBtree.insert( val, null );
-                }
-
+                buildSubBTree( valueBtree, valueArray );
+                
                 // We can delete the array now
                 nbArrayElems = 0;
                 valueArray = null;
@@ -301,7 +307,7 @@ import org.apache.directory.mavibot.btre
                 // And inject the new value
                 valueBtree.insert( value, null );
             }
-            catch ( IOException e )
+            catch ( Exception e )
             {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
@@ -318,6 +324,8 @@ import org.apache.directory.mavibot.btre
             }
             else
             {
+                //FIXME delete the sub-btree if the valueThresholdLow is reached
+                
                 // check that the value is not already present in the ValueHolder
                 int pos = findPos( value );
 

Modified: directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java?rev=1621483&r1=1621482&r2=1621483&view=diff
==============================================================================
--- directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java (original)
+++ directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java Sat Aug 30 16:22:23 2014
@@ -134,6 +134,23 @@ import org.apache.directory.mavibot.btre
 
 
     /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected BTree buildSubBTree( BTree<V, V> btree, V[] dupKeyValues ) throws Exception
+    {
+        for ( V val : dupKeyValues )
+        {
+            // Here, we should insert all the values in one shot then 
+            // write the btree on disk only once.
+            valueBtree.insert( val, null );
+        }
+        
+        return valueBtree;
+    }
+
+
+    /**
      * Set the subBtree in the ValueHolder
      */
     /* No qualifier*/void setSubBtree( BTree<V, V> subBtree )

Modified: directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java?rev=1621483&r1=1621482&r2=1621483&view=diff
==============================================================================
--- directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java (original)
+++ directory/mavibot/branches/free-page-mgmt/mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java Sat Aug 30 16:22:23 2014
@@ -708,19 +708,15 @@ import static org.apache.directory.mavib
 
 
     /**
-     * Constructs the sub-BTree using bulkload instead of performing sequential inserts.
-     * 
-     * @param btree the sub-BTtree to be constructed
-     * @param dupKeyValues the array of values to be inserted as keys
-     * @return
-     * @throws Exception
+     * {@inheritDoc}
      */
-    private BTree build( PersistedBTree<V, V> btree, V[] dupKeyValues ) throws Exception
+    protected BTree buildSubBTree( BTree<V, V> givenBTree, V[] dupKeyValues ) throws Exception
     {
+        PersistedBTree<V, V> btree = ( PersistedBTree<V, V> ) givenBTree;
+        
         long newRevision = btree.getRevision() + 1;
         
         int numKeysInNode = btree.getPageSize();
-        
         RecordManager rm = btree.getRecordManager();
         
         List<Page<V, V>> lstLeaves = new ArrayList<Page<V, V>>();
@@ -787,7 +783,7 @@ import static org.apache.directory.mavib
         Page oldRoot = btree.getRootPage();
         
         long newRootPageOffset = ( ( AbstractPage ) rootPage ).getOffset();
-        System.out.println( "replacing old offset " + btree.getRootPageOffset() + " of the BTree " + btree.getName() + " with " + newRootPageOffset );
+        //System.out.println( "replacing old offset " + btree.getRootPageOffset() + " of the BTree " + btree.getName() + " with " + newRootPageOffset );
         
         BTreeHeader header = btree.getBtreeHeader();
         
@@ -799,7 +795,7 @@ import static org.apache.directory.mavib
         
         header.setBTreeHeaderOffset( newBtreeHeaderOffset );
         
-        rm.freePages( ( BTree ) btree, btree.getRevision(), ( List ) Arrays.asList( oldRoot ) );
+        rm.free( ( ( AbstractPage ) oldRoot ).getOffset() );
 
         return btree;
     }