You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/05/23 15:30:52 UTC
svn commit: r1126486 - in /incubator/jena/Experimental/TxTDB/trunk:
src-dev/tx/TxMain.java
src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java
src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java
Author: andy
Date: Mon May 23 13:30:51 2011
New Revision: 1126486
URL: http://svn.apache.org/viewvc?rev=1126486&view=rev
Log: (empty)
Modified:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java?rev=1126486&r1=1126485&r2=1126486&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java Mon May 23 13:30:51 2011
@@ -77,10 +77,7 @@ public class TxMain
//test.BPlusTreeRun.main("test", "--bptree:check", "3", "125", "100000") ; exit(0) ;
exit(0) ;
-
-
bpTreeTracking() ; exit(0) ;
-
transactional() ; exit(0) ;
}
@@ -90,7 +87,8 @@ public class TxMain
BlockMgrFactory.AddTracker = false ;
//int[] keys = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int[] vals = {9,8,7,6,5,4,3,2,1,0};
+ int[] vals1 = {9,8,7,6};
+ int[] vals2 = {5,4,3,2,1,0};
//RangeIndex rIndex = makeRangeIndex(2) ;
BPlusTree bpt = BPlusTree.makeMem(2, 2, RecordLib.TestRecordLength, 0) ;
@@ -113,18 +111,32 @@ public class TxMain
// BPlusTreeParams.CheckingNode = true ;
// BPlusTreeParams.CheckingTree = true ;
- for ( int v : vals )
+ for ( int v : vals1 )
{
Record r = intToRecord(v, rIndex.getRecordFactory()) ;
- if ( false && v == 5 )
- {
- BPlusTreeParams.Logging = true ;
- Log.enable(BPTreeNode.class.getName(), "ALL") ;
- }
System.out.println(" Add: "+r) ;
rIndex.add(r) ;
}
-
+
+ if ( true )
+ {
+ BlockMgr mgr = bpt.getRecordsMgr().getBlockMgr() ;
+ mgr = BlockMgrFactory.tracker(mgr) ;
+ mgr = new BlockMgrLogger("ABC", mgr, true) ;
+ bpt = BPlusTree.attach(bpt.getParams(), bpt.getNodeManager().getBlockMgr(), mgr) ;
+ rIndex = bpt ;
+
+ BPlusTreeParams.Logging = true ;
+ Log.enable(BPTreeNode.class) ;
+ }
+
+ for ( int v : vals2 )
+ {
+ Record r = intToRecord(v, rIndex.getRecordFactory()) ;
+ System.out.println(" Add: "+r) ;
+ rIndex.add(r) ;
+ }
+
for ( Record r : rIndex )
{
System.out.println(r) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java?rev=1126486&r1=1126485&r2=1126486&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrLogger.java Mon May 23 13:30:51 2011
@@ -34,7 +34,7 @@ public class BlockMgrLogger implements B
public Block allocate(int blockSize)
{
Block x = blockMgr.allocate(blockSize) ;
- log.info("Allocate: "+x.getId()) ;
+ log.info("Allocate("+x.getId()+")") ;
return x ;
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java?rev=1126486&r1=1126485&r2=1126486&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java Mon May 23 13:30:51 2011
@@ -110,11 +110,17 @@ public class BlockMgrTracker /*extends B
@Override
public Block getRead(int id)
{
+ // What if this is a write block already?
synchronized (this)
{
checkRead(GetRead) ;
+ Integer x = id ;
add(GetRead, id) ;
- activeReadBlocks.add(id) ;
+
+ if ( activeWriteBlocks.contains(x))
+ activeWriteBlocks.add(x) ;
+ else
+ activeReadBlocks.add(x) ;
}
return blockMgr.getRead(id) ;
}
@@ -125,8 +131,9 @@ public class BlockMgrTracker /*extends B
synchronized (this)
{
checkReadOrIter(IterRead) ;
- add(IterRead, id) ;
- activeIterBlocks.add(id) ;
+ Integer x = id ;
+ add(IterRead, x) ;
+ activeIterBlocks.add(x) ;
}
return blockMgr.getReadIterator(id) ;
}
@@ -137,8 +144,9 @@ public class BlockMgrTracker /*extends B
synchronized (this)
{
checkUpdate(GetWrite) ;
- add(GetWrite, id) ;
- activeWriteBlocks.add(id) ;
+ Integer x = id ;
+ add(GetWrite, x) ;
+ activeWriteBlocks.add(x) ;
}
return blockMgr.getWrite(id) ;
}
@@ -154,14 +162,15 @@ public class BlockMgrTracker /*extends B
if ( ! activeWriteBlocks.contains(id) && ! activeReadBlocks.contains(id) )
error(Promote, id+" is not an active block") ;
- // Promote read uses of this block.
- // Leave iterator reads alone.
+
if ( activeReadBlocks.contains(id) )
- {
- long x = activeReadBlocks.count(id) ;
- activeReadBlocks.removeAll(id) ;
- activeWriteBlocks.add(id, x) ;
- }
+ // Remove one read count
+ // Really, do this if obtained via "getRead" and not "getWrite"
+ activeReadBlocks.remove(id) ;
+
+ // Double promotion results in only one entry.
+ if ( ! activeWriteBlocks.contains(id) )
+ activeWriteBlocks.add(id) ;
}
return blockMgr.promote(block) ;
}
@@ -178,10 +187,9 @@ public class BlockMgrTracker /*extends B
if ( ! activeReadBlocks.contains(id) && ! activeIterBlocks.contains(id) && ! activeWriteBlocks.contains(id) )
error(Release, id+" is not an active block") ;
+ // May have been promoted.
activeReadBlocks.remove(block.getId()) ;
activeIterBlocks.remove(block.getId()) ;
-
- // This seems to need removeAll - is that acceptable?
activeWriteBlocks.remove(block.getId()) ;
}
blockMgr.release(block) ;