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) ;