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 2014/05/04 10:43:29 UTC

svn commit: r1592322 - /directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java

Author: elecharny
Date: Sun May  4 08:43:29 2014
New Revision: 1592322

URL: http://svn.apache.org/r1592322
Log:
Cleanup the code, removing useless methods and useless parameters : we are *not* rebuilding a tree when we check it !

Modified:
    directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java

Modified: directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java?rev=1592322&r1=1592321&r2=1592322&view=diff
==============================================================================
--- directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java (original)
+++ directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java Sun May  4 08:43:29 2014
@@ -302,7 +302,7 @@ public class MavibotInspector
         // update the checkedPages
         updateCheckedPages( checkedPages, recordManager.pageSize, bobHeaderPageIos );
 
-        checkBtree( recordManager, checkedPages, bobHeaderPageIos, btree );
+        checkBtree( recordManager, checkedPages, bobHeaderPageIos );
     }
 
     
@@ -322,10 +322,11 @@ public class MavibotInspector
         // update the checkedPages
         updateCheckedPages( checkedPages, recordManager.pageSize, cpbHeaderPageIos );
 
-        //checkBtree( recordManager, checkedPages, pageSize, bobHeaderPageIos, btree );
+        //checkBtree( recordManager, checkedPages, pageSize, bobHeaderPageIos );
     }
+    
 
-    private static <K, V> void checkBtree( RecordManager recordManager, int[] checkedPages, PageIO[] pageIos, BTree<K, V> btree ) throws IOException
+    private static <K, V> void checkBtree( RecordManager recordManager, int[] checkedPages, PageIO[] pageIos ) throws IOException
     {
         long dataPos = 0L;
 
@@ -349,29 +350,15 @@ public class MavibotInspector
 
         checkOffset( recordManager, btreeInfoOffset );
 
-        checkBtreeInfo( recordManager, checkedPages, btreeInfoOffset, btree );
+        checkBtreeInfo( recordManager, checkedPages, btreeInfoOffset );
 
         // Check the elements in the btree itself
         // We will read every single page
-        checkPage( recordManager, checkedPages, rootPageOffset, btree );
-
-        //Page<K, V> btreeRoot = readPage( btree, rootPageIos );
-
-
-//        if ( btreeRoot.isLeaf() )
-//        {
-//            // This is a Leaf : we hust have to check that the offsets are correct
-//            long pageOffset = ((PersistedLeaf<K, V>)btreeRoot).offset;
-//        }
-//        else
-//        {
-//            // This is a Node : We will have to recursively go down the BTree
-//            long pageOffset = ((PersistedNode<K, V>)btreeRoot).offset;
-//        }
+        checkPage( recordManager, checkedPages, rootPageOffset );
     }
     
     
-    private static <K, V> void checkBtreeInfo( RecordManager recordManager, int[] checkedPages, long btreeInfoOffset, BTree<K, V> btree ) throws IOException
+    private static <K, V> void checkBtreeInfo( RecordManager recordManager, int[] checkedPages, long btreeInfoOffset ) throws IOException
     {
         PageIO[] btreeInfoPagesIos = recordManager.readPageIOs( btreeInfoOffset, Long.MAX_VALUE );
 
@@ -383,14 +370,13 @@ public class MavibotInspector
 
         // The B-tree page size
         int btreePageSize = recordManager.readInt( btreeInfoPagesIos, dataPos );
-        BTreeFactory.setPageSize( btree, btreePageSize );
         dataPos += RecordManager.INT_SIZE;
 
         // The tree name
         ByteBuffer btreeNameBytes = recordManager.readBytes( btreeInfoPagesIos, dataPos );
         dataPos += RecordManager.INT_SIZE + btreeNameBytes.limit();
         String btreeName = Strings.utf8ToString( btreeNameBytes );
-        BTreeFactory.setName( btree, btreeName );
+        //BTreeFactory.setName( btree, btreeName );
 
         // The keySerializer FQCN
         ByteBuffer keySerializerBytes = recordManager.readBytes( btreeInfoPagesIos, dataPos );
@@ -403,8 +389,6 @@ public class MavibotInspector
             keySerializerFqcn = Strings.utf8ToString( keySerializerBytes );
         }
 
-        //BTreeFactory.setKeySerializer( btree, keySerializerFqcn );
-
         // The valueSerialier FQCN
         ByteBuffer valueSerializerBytes = recordManager.readBytes( btreeInfoPagesIos, dataPos );
 
@@ -416,16 +400,13 @@ public class MavibotInspector
             valueSerializerFqcn = Strings.utf8ToString( valueSerializerBytes );
         }
 
-        //BTreeFactory.setValueSerializer( btree, valueSerializerFqcn );
-
         // The B-tree allowDuplicates flag
         int allowDuplicates = recordManager.readInt( btreeInfoPagesIos, dataPos );
-        ( ( InMemoryBTree<K, V> ) btree ).setAllowDuplicates( allowDuplicates != 0 );
         dataPos += RecordManager.INT_SIZE;
     }
 
     
-    private static <K, V> void checkPage( RecordManager recordManager, int[] checkedPages, long pageOffset, BTree<K, V> btree ) throws EndOfFileExceededException, IOException
+    private static <K, V> void checkPage( RecordManager recordManager, int[] checkedPages, long pageOffset ) throws EndOfFileExceededException, IOException
     {
         PageIO[] pageIos = recordManager.readPageIOs( pageOffset, Long.MAX_VALUE );
 
@@ -455,23 +436,23 @@ public class MavibotInspector
         if ( nbElems >= 0 )
         {
             // It's a leaf, process it as we may have sub-btrees
-            checkLeafKeysAndValues( recordManager, checkedPages, btree, nbElems, revision, byteBuffer, pageIos );
+            checkLeafKeysAndValues( recordManager, checkedPages, nbElems, revision, byteBuffer, pageIos );
         }
         else
         {
             // It's a node
-            long[] children = checkNodeKeysAndValues( recordManager, checkedPages, btree, -nbElems, revision, byteBuffer, pageIos );
+            long[] children = checkNodeKeysAndValues( recordManager, checkedPages, -nbElems, revision, byteBuffer, pageIos );
 
             for ( int pos = 0; pos < nbElems; pos++ )
             {
                 // Recursively check the children
-                checkPage( recordManager, checkedPages, children[pos], btree );
+                checkPage( recordManager, checkedPages, children[pos] );
             }
         }
     }
     
     
-    private static <K, V> void checkLeafKeysAndValues( RecordManager recordManager, int[] checkedPages, BTree<K, V> btree, int nbElems, long revision, ByteBuffer byteBuffer, PageIO[] pageIos )
+    private static <K, V> void checkLeafKeysAndValues( RecordManager recordManager, int[] checkedPages, int nbElems, long revision, ByteBuffer byteBuffer, PageIO[] pageIos )
     {
         // Read each key and value
         for ( int i = 0; i < nbElems; i++ )
@@ -493,7 +474,7 @@ public class MavibotInspector
     /**
      * Deserialize a Node from some PageIos
      */
-    private static <K, V> long[] checkNodeKeysAndValues( RecordManager recordManager, int[] checkedPages, BTree<K, V> btree, int nbElems, long revision,
+    private static <K, V> long[] checkNodeKeysAndValues( RecordManager recordManager, int[] checkedPages, int nbElems, long revision,
         ByteBuffer byteBuffer, PageIO[] pageIos ) throws IOException
     {
         long[] children = new long[nbElems + 1];
@@ -512,9 +493,6 @@ public class MavibotInspector
 
             int currentPosition = byteBuffer.position();
 
-            // and the key value
-            K key = btree.getKeySerializer().deserialize( byteBuffer );
-
             // Set the new position now
             byteBuffer.position( currentPosition + keyLength );
         }
@@ -577,181 +555,6 @@ public class MavibotInspector
 
 
     /**
-     * Check each B-tree we manage
-     * @throws IOException
-     * @throws EndOfFileExceededException
-     * @throws ClassNotFoundException
-     * @throws IllegalAccessException
-     * @throws InstantiationException
-     */
-    private static void checkBtrees( RecordManager recordManager, int[] checkedPages, int pageSize, int nbBtrees ) throws EndOfFileExceededException,
-        IOException, InstantiationException, IllegalAccessException, ClassNotFoundException
-    {
-        // Iterate on each B-tree until we have exhausted all of them. The number
-        // of btrees is just used to check that we have the correct number
-        // of stored B-trees, as they are all linked.
-        long position = RecordManager.RECORD_MANAGER_HEADER_SIZE;
-
-        for ( int i = 0; i < nbBtrees; i++ )
-        {
-            // Load the pageIOs containing the B-tree
-            PageIO[] pageIos = recordManager.readPageIOs( position, Long.MAX_VALUE );
-
-            // Check that they are correctly linked and not already used
-            int pageNb = 0;
-
-            for ( PageIO currentPageIo : pageIos )
-            {
-                //
-                long nextPageOffset = currentPageIo.getNextPage();
-
-                if ( pageNb == pageIos.length - 1 )
-                {
-                    if ( nextPageOffset != RecordManager.NO_PAGE )
-                    {
-                        throw new InvalidBTreeException( "The pointer to the next page is not valid, expected NO_PAGE" );
-                    }
-                }
-                else
-                {
-                    if ( nextPageOffset == RecordManager.NO_PAGE )
-                    {
-                        throw new InvalidBTreeException( "The pointer to the next page is not valid, NO_PAGE" );
-                    }
-                }
-
-                if ( ( nextPageOffset != RecordManager.NO_PAGE ) && ( ( nextPageOffset - RecordManager.RECORD_MANAGER_HEADER_SIZE ) % pageSize != 0 ) )
-                {
-                    throw new InvalidBTreeException( "The pointer to the next page is not valid" );
-                }
-
-                // Update the array of processed pages
-                setCheckedPage( recordManager, checkedPages, currentPageIo.getOffset() );
-            }
-
-            // Now check the B-tree
-            long nextBtree = checkBtree( recordManager, checkedPages, pageIos, i == nbBtrees - 1 );
-
-            if ( ( nextBtree == RecordManager.NO_PAGE ) && ( i < nbBtrees - 1 ) )
-            {
-                throw new InvalidBTreeException( "The pointer to the next B-tree is incorrect" );
-            }
-
-            position = nextBtree;
-        }
-    }
-
-
-    /**
-     * Check a B-tree
-     * @throws IllegalAccessException
-     * @throws InstantiationException
-     * @throws ClassNotFoundException
-     */
-    private static long checkBtree( RecordManager recordManager, int[] checkedPages, PageIO[] pageIos, boolean isLast )
-        throws EndOfFileExceededException, IOException, InstantiationException, IllegalAccessException,
-        ClassNotFoundException
-    {
-        long dataPos = 0L;
-
-        // The B-tree current revision
-        long revision = recordManager.readLong( pageIos, dataPos );
-        dataPos += RecordManager.LONG_SIZE;
-
-        // The nb elems in the tree
-        long nbElems = recordManager.readLong( pageIos, dataPos );
-        dataPos += RecordManager.LONG_SIZE;
-
-        // The B-tree rootPage offset
-        long rootPageOffset = recordManager.readLong( pageIos, dataPos );
-
-        if ( ( rootPageOffset < 0 ) || ( rootPageOffset > recordManager.fileChannel.size() ) )
-        {
-            throw new InvalidBTreeException( "The rootpage is incorrect : " + rootPageOffset );
-        }
-
-        dataPos += RecordManager.LONG_SIZE;
-
-        // The next B-tree offset
-        long nextBtreeOffset = recordManager.readLong( pageIos, dataPos );
-
-        if ( ( ( rootPageOffset < 0 ) && ( !isLast ) ) || ( nextBtreeOffset > recordManager.fileChannel.size() ) )
-        {
-            throw new InvalidBTreeException( "The rootpage is incorrect : " + rootPageOffset );
-        }
-
-        dataPos += RecordManager.LONG_SIZE;
-
-        // The B-tree page size
-        int btreePageSize = recordManager.readInt( pageIos, dataPos );
-
-        if ( ( btreePageSize < 2 ) || ( ( btreePageSize & ( ~btreePageSize + 1 ) ) != btreePageSize ) )
-        {
-            throw new InvalidBTreeException( "The B-tree page size is not a power of 2 : " + btreePageSize );
-        }
-
-        dataPos += RecordManager.INT_SIZE;
-
-        // The tree name
-        ByteBuffer btreeNameBytes = recordManager.readBytes( pageIos, dataPos );
-        dataPos += RecordManager.INT_SIZE;
-
-        dataPos += btreeNameBytes.limit();
-        String btreeName = Strings.utf8ToString( btreeNameBytes );
-
-        // The keySerializer FQCN
-        ByteBuffer keySerializerBytes = recordManager.readBytes( pageIos, dataPos );
-
-        String keySerializerFqcn = null;
-        dataPos += RecordManager.INT_SIZE;
-
-        if ( keySerializerBytes != null )
-        {
-            dataPos += keySerializerBytes.limit();
-            keySerializerFqcn = Strings.utf8ToString( keySerializerBytes );
-        }
-        else
-        {
-            keySerializerFqcn = "";
-        }
-
-        // The valueSerialier FQCN
-        ByteBuffer valueSerializerBytes = recordManager.readBytes( pageIos, dataPos );
-
-        String valueSerializerFqcn = null;
-        dataPos += RecordManager.INT_SIZE;
-
-        if ( valueSerializerBytes != null )
-        {
-            dataPos += valueSerializerBytes.limit();
-            valueSerializerFqcn = Strings.utf8ToString( valueSerializerBytes );
-        }
-        else
-        {
-            valueSerializerFqcn = "";
-        }
-
-        // The B-tree allowDuplicates flag
-        int allowDuplicates = recordManager.readInt( pageIos, dataPos );
-        dataPos += RecordManager.INT_SIZE;
-
-        // Now, check the rootPage, which can be a Leaf or a Node, depending
-        // on the number of elements in the tree : if it's above the pageSize,
-        // it's a Node, otherwise it's a Leaf
-        Class<?> valueSerializer = Class.forName( valueSerializerFqcn );
-        Class<?> keySerializer = Class.forName( keySerializerFqcn );
-
-        /*
-        checkRoot( checkedPages, rootPageOffset, pageSize, nbElems,
-            ( ElementSerializer<?> ) keySerializer.newInstance(),
-            ( ElementSerializer<?> ) valueSerializer.newInstance(), allowDuplicates != 0 );
-        */
-
-        return nextBtreeOffset;
-    }
-
-
-    /**
      * Check the free pages
      *
      * @param checkedPages