You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ka...@apache.org on 2013/05/13 09:35:18 UTC
svn commit: r1481719 -
/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java
Author: kayyagari
Date: Mon May 13 07:35:18 2013
New Revision: 1481719
URL: http://svn.apache.org/r1481719
Log:
o added some more constructors
o removed the allowDuplicates flag and replaced it with the one from header
o moved the header update block from insert(k,v) to insert(k,v,r)
Modified:
labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java
Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java?rev=1481719&r1=1481718&r2=1481719&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/BTree.java Mon May 13 07:35:18 2013
@@ -124,9 +124,6 @@ public class BTree<K, V>
/** The queue containing all the modifications applied on the bTree */
private BlockingQueue<Modification<K, V>> modificationsQueue;
- /** Flag to enable duplicate key support */
- private boolean allowDuplicates;
-
/** A flag set to true if we want to keep old revisions */
private boolean keepRevisions = false;
@@ -352,7 +349,7 @@ public class BTree<K, V>
comparator = keySerializer.getComparator();
readTimeOut = configuration.getReadTimeOut();
writeBufferSize = configuration.getWriteBufferSize();
- allowDuplicates = configuration.isAllowDuplicates();
+ btreeHeader.setAllowDuplicates( configuration.isAllowDuplicates() );
type = configuration.getType();
if ( comparator == null )
@@ -377,7 +374,14 @@ public class BTree<K, V>
public BTree( String name, ElementSerializer<K> keySerializer, ElementSerializer<V> valueSerializer )
throws IOException
{
- this( name, null, keySerializer, valueSerializer, DEFAULT_PAGE_SIZE );
+ this( name, keySerializer, valueSerializer, false );
+ }
+
+
+ public BTree( String name, ElementSerializer<K> keySerializer, ElementSerializer<V> valueSerializer, boolean allowDuplicates )
+ throws IOException
+ {
+ this( name, null, keySerializer, valueSerializer, DEFAULT_PAGE_SIZE, allowDuplicates );
}
@@ -420,9 +424,15 @@ public class BTree<K, V>
int pageSize )
throws IOException
{
+ this( name, dataDir, keySerializer, valueSerializer, pageSize, false );
+ }
+
+ public BTree( String name, String dataDir, ElementSerializer<K> keySerializer, ElementSerializer<V> valueSerializer,
+ int pageSize, boolean allowDuplicates )
+ throws IOException
+ {
btreeHeader = new BTreeHeader();
btreeHeader.setName( name );
-
if( dataDir != null )
{
envDir = new File( dataDir );
@@ -441,10 +451,12 @@ public class BTree<K, V>
comparator = keySerializer.getComparator();
+ btreeHeader.setAllowDuplicates( allowDuplicates );
+
// Create the first root page, with revision 0L. It will be empty
// and increment the revision at the same time
rootPage = new Leaf<K, V>( this );
-
+
// Now, call the init() method
init();
}
@@ -520,6 +532,7 @@ public class BTree<K, V>
}
// Initialize the txnManager thread
+ //FIXME we should NOT create a new transaction manager thread for each BTree
createTransactionManager();
}
@@ -727,13 +740,6 @@ public class BTree<K, V>
{
existingValue = ( ( ModifyResult<K, V> ) result ).getModifiedValue();
}
-
- // If the BTree is managed, we have to update the rootPage on disk
- if ( isManaged() )
- {
- // Update the BTree header now
- recordManager.updateBtreeHeader( this, ( ( AbstractPage<K, V> ) rootPage ).getOffset() );
- }
}
finally
{
@@ -1234,8 +1240,16 @@ public class BTree<K, V>
if ( modifiedValue == null )
{
btreeHeader.incrementNbElems();
+
+ // If the BTree is managed, we have to update the rootPage on disk
+ if ( isManaged() )
+ {
+ // Update the BTree header now
+ recordManager.updateBtreeHeader( this, ( ( AbstractPage<K, V> ) rootPage ).getOffset() );
+ }
}
+
// Store the created rootPage into the revision BTree
if ( keepRevisions )
{
@@ -1814,10 +1828,16 @@ public class BTree<K, V>
*/
public boolean isAllowDuplicates()
{
- return allowDuplicates;
+ return btreeHeader.isAllowDuplicates();
}
+ /* No qualifier */void setAllowDuplicates( boolean allowDuplicates )
+ {
+ btreeHeader.setAllowDuplicates( allowDuplicates );
+ }
+
+
/**
* @return the keepRevisions
*/
@@ -1883,7 +1903,7 @@ public class BTree<K, V>
sb.append( comparator.getClass().getSimpleName() );
}
- sb.append( ", DuplicatesAllowed: " ).append( allowDuplicates );
+ sb.append( ", DuplicatesAllowed: " ).append( btreeHeader.isAllowDuplicates() );
if ( type == BTreeTypeEnum.PERSISTENT )
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org