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/05/06 15:08:34 UTC
svn commit: r1592737 - in /directory/mavibot/branches/with-txns/mavibot/src:
main/java/org/apache/directory/mavibot/btree/MavibotInspector.java
test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.java
Author: kayyagari
Date: Tue May 6 13:08:33 2014
New Revision: 1592737
URL: http://svn.apache.org/r1592737
Log:
o added code to check pages of all the managed BTrees
o ignored a test
Modified:
directory/mavibot/branches/with-txns/mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java
directory/mavibot/branches/with-txns/mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.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=1592737&r1=1592736&r2=1592737&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 Tue May 6 13:08:33 2014
@@ -27,6 +27,8 @@ import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
import org.apache.directory.mavibot.btree.exception.EndOfFileExceededException;
@@ -267,14 +269,59 @@ public class MavibotInspector
checkOffset( recordManager, currentCopiedPagesBtreeOffset );
// Now, check the BTree of Btrees
- BTree<NameRevision, Long> btreeOfBtrees = BTreeFactory.<NameRevision, Long> createInMemoryBTree();
+ BTree<NameRevision, Long> btreeOfBtrees = BTreeFactory.<NameRevision, Long> createPersistedBTree();
checkBtreeOfBtrees( recordManager, checkedPages, btreeOfBtrees );
// And the Copied Pages BTree
checkCopiedPagesBtree( recordManager, checkedPages );
// The B-trees
- //checkBtrees( recordManager, checkedPages, pageSize, nbBtrees );
+ ///////////////////////
+ // Now, read all the B-trees from the btree of btrees
+ TupleCursor<NameRevision, Long> btreeCursor = btreeOfBtrees.browse();
+ Map<String, Long> loadedBtrees = new HashMap<String, Long>();
+
+ // loop on all the btrees we have, and keep only the latest revision
+ long currentRevision = -1L;
+
+ while ( btreeCursor.hasNext() )
+ {
+ Tuple<NameRevision, Long> btreeTuple = btreeCursor.next();
+ NameRevision nameRevision = btreeTuple.getKey();
+ long btreeOffset = btreeTuple.getValue();
+ long revision = nameRevision.getValue();
+
+ // Check if we already have processed this B-tree
+ Long loadedBtreeRevision = loadedBtrees.get( nameRevision.getName() );
+
+ if ( loadedBtreeRevision != null )
+ {
+ // The btree has already been loaded. The revision is necessarily higher
+ if ( revision > currentRevision )
+ {
+ // We have a newer revision : switch to the new revision (we keep the offset atm)
+ loadedBtrees.put( nameRevision.getName(), btreeOffset );
+ currentRevision = revision;
+ }
+ }
+ else
+ {
+ // This is a new B-tree
+ loadedBtrees.put( nameRevision.getName(), btreeOffset );
+ currentRevision = nameRevision.getRevision();
+ }
+ }
+
+ // check the btrees
+ for ( String btreeName : loadedBtrees.keySet() )
+ {
+ long btreeOffset = loadedBtrees.get( btreeName );
+
+ PageIO[] btreePageIos = recordManager.readPageIOs( btreeOffset, Long.MAX_VALUE );
+ checkBtree( recordManager, checkedPages, btreePageIos );
+ }
+
+ //////////////////////
dumpCheckedPages( recordManager, checkedPages );
}
@@ -296,11 +343,13 @@ public class MavibotInspector
* @throws IOException
* @throws EndOfFileExceededException
*/
- private static <K, V> void checkBtreeOfBtrees( RecordManager recordManager, int[] checkedPages, BTree<K, V> btree ) throws EndOfFileExceededException, IOException
+ private static <K, V> void checkBtreeOfBtrees( RecordManager recordManager, int[] checkedPages, BTree<K, V> btree ) throws Exception
{
// Read the BOB header
PageIO[] bobHeaderPageIos = recordManager.readPageIOs( recordManager.currentBtreeOfBtreesOffset, Long.MAX_VALUE );
+ recordManager.loadBtree( bobHeaderPageIos, btree, null );
+
// update the checkedPages
updateCheckedPages( checkedPages, recordManager.pageSize, bobHeaderPageIos );
Modified: directory/mavibot/branches/with-txns/mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/with-txns/mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.java?rev=1592737&r1=1592736&r2=1592737&view=diff
==============================================================================
--- directory/mavibot/branches/with-txns/mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.java (original)
+++ directory/mavibot/branches/with-txns/mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedBTreeBuilderTest.java Tue May 6 13:08:33 2014
@@ -28,6 +28,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.directory.mavibot.btree.serializer.IntSerializer;
+import org.junit.Ignore;
import org.junit.Test;
@@ -36,6 +37,7 @@ import org.junit.Test;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
+@Ignore( "until ApacheDS works with mavibot" )
public class PersistedBTreeBuilderTest
{