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 2012/08/03 18:24:35 UTC

svn commit: r1369086 - in /jena/trunk/jena-tdb/src: main/java/com/hp/hpl/jena/tdb/base/file/ main/java/com/hp/hpl/jena/tdb/transaction/ test/java/com/hp/hpl/jena/tdb/extra/

Author: andy
Date: Fri Aug  3 16:24:34 2012
New Revision: 1369086

URL: http://svn.apache.org/viewvc?rev=1369086&view=rev
Log:
JENA-256

Unrelated issue the perfromance test showed up - recovering from the journal may legitimately write beyond the end of the file.

Added:
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java
      - copied, changed from r1367927, jena/Scratch/AFS/Jena-Dev/trunk/src/dev/T_TDBWriteTransaction.java
Removed:
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransactionPerformance.java
Modified:
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessBase.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessDirect.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessMapped.java
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessBase.java?rev=1369086&r1=1369085&r2=1369086&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessBase.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessBase.java Fri Aug  3 16:24:34 2012
@@ -38,7 +38,7 @@ public abstract class BlockAccessBase im
     
     protected final String label ;
     protected long numFileBlocks = -1 ;             // Don't overload use of this!
-    protected final AtomicLong seq ;   // Id (future)
+    protected final AtomicLong seq ;                // Id (future)
     protected boolean isEmpty = false ;
 
     public BlockAccessBase(String filename, int blockSize)
@@ -46,10 +46,10 @@ public abstract class BlockAccessBase im
         file = FileBase.create(filename) ;
         this.blockSize = blockSize ;
         this.label = FileOps.basename(filename) ;
-        long filesize = file.size() ;
+        long filesize = file.size() ;               // This is not related to used file length in mapped mode.
         long longBlockSize = blockSize ;
             
-        numFileBlocks = filesize/longBlockSize ;
+        numFileBlocks = filesize/longBlockSize ;    // This is not related to used file length in mapped mode.
         seq = new AtomicLong(numFileBlocks) ;
 
         if ( numFileBlocks > Integer.MAX_VALUE )
@@ -104,7 +104,7 @@ public abstract class BlockAccessBase im
             synchronized(this)
             {
                 if ( id < 0 || id >= numFileBlocks )
-                    throw new BlockException(format("BlockAccessBase: Bounds exception: %s: (%d,%d)", file.filename, id,numFileBlocks)) ;
+                    throw new BlockException(format("BlockAccessBase: Bounds exception: %s: (%d,%d)", file.filename, id, numFileBlocks)) ;
             }
         }
     }

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessDirect.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessDirect.java?rev=1369086&r1=1369085&r2=1369086&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessDirect.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessDirect.java Fri Aug  3 16:24:34 2012
@@ -101,6 +101,9 @@ public class BlockAccessDirect extends B
     @Override
     public void overwrite(Block block)
     {
+        // Write at end => extend
+        if ( block.getId() >= numFileBlocks )
+            numFileBlocks = block.getId()+1 ;
         write(block) ;
     }
 

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessMapped.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessMapped.java?rev=1369086&r1=1369085&r2=1369086&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessMapped.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/BlockAccessMapped.java Fri Aug  3 16:24:34 2012
@@ -107,6 +107,10 @@ public class BlockAccessMapped extends B
     @Override
     public void overwrite(Block block)
     {
+        // Write at end => extend
+        if ( block.getId() >= numFileBlocks )
+            // Housekeeping.
+            numFileBlocks = block.getId()+1 ;
         write(block, CopyContents.Overwrite) ;
     }
 

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java?rev=1369086&r1=1369085&r2=1369086&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java Fri Aug  3 16:24:34 2012
@@ -64,9 +64,8 @@ public class TransactionManager
     /** This controls how many write transactions we batch up before 
      *  deciding to flush the journal to the main database.  
      */
-    @Deprecated
     // Temporarily public ....
-    public static /*final*/ int QueueBatchSize = 0 ; 
+    public static /*final*/ int QueueBatchSize = 10 ; 
     
     enum TxnPoint { BEGIN, COMMIT, ABORT, CLOSE, QUEUE, UNQUEUE }
     private List<Pair<Transaction, TxnPoint>> transactionStateTransition ;

Copied: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java (from r1367927, jena/Scratch/AFS/Jena-Dev/trunk/src/dev/T_TDBWriteTransaction.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java?p2=jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java&p1=jena/Scratch/AFS/Jena-Dev/trunk/src/dev/T_TDBWriteTransaction.java&r1=1367927&r2=1369086&rev=1369086&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/dev/T_TDBWriteTransaction.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java Fri Aug  3 16:24:34 2012
@@ -27,7 +27,7 @@
 
 // Submitted JENA-256 
 
-package dev ;
+package com.hp.hpl.jena.tdb.extra ;
 
 import java.util.ArrayList ;
 import java.util.List ;
@@ -42,13 +42,16 @@ import com.hp.hpl.jena.rdf.model.Propert
 import com.hp.hpl.jena.rdf.model.Resource ;
 import com.hp.hpl.jena.tdb.TDBFactory ;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
+import com.hp.hpl.jena.tdb.transaction.Journal ;
+import com.hp.hpl.jena.tdb.transaction.JournalControl ;
 import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
 
 public class T_TDBWriteTransaction {
 
-	private final static int TOTAL = 100 ; // 100;
-    static boolean bracketWithReader = false ;
+	private final static int TOTAL = 100 ;
+    static boolean bracketWithReader = true ;
 
 	final static String INDEX_INFO_SUBJECT =   "http://test.net/xmlns/test/1.0/Triple-Indexer";
 	final static String TIMESTAMP_PREDICATE =  "http://test.net/xmlns/test/1.0/lastProcessedTimestamp";
@@ -56,7 +59,6 @@ public class T_TDBWriteTransaction {
 	final static String VERSION_PREDICATE =    "http://test.net/xmlns/test/1.0/indexVersion";
 	final static String INDEX_SIZE_PREDICATE = "http://test.net/xmlns/test/1.0/indexSize";
 
-    @SuppressWarnings("deprecation")
     public static void main(String[] args) {
 
 	    Log.setLog4j() ;
@@ -72,6 +74,8 @@ public class T_TDBWriteTransaction {
 	    //FileOps.clearDirectory(location) ;
 	    bracketWithReader = false ;
 	    
+	    //Log.enable(JournalControl.class.getName()) ;
+	    
 	    //Submitted without .... 
 	    if ( true )
 	        SystemTDB.setFileMode(FileMode.direct) ;
@@ -83,13 +87,20 @@ public class T_TDBWriteTransaction {
 
     static public void run(String location)
     {
-	    //String location = args[0]; // + "/" + UUID.randomUUID().toString();
+        if ( false )
+        {
+            Journal journal = Journal.create(new Location(location)) ;
+            JournalControl.print(journal) ;
+            journal.close() ;
+        }
+        //String location = args[0]; // + "/" + UUID.randomUUID().toString();
 
 		//String baseGraphName = "com.ibm.test.graphNamePrefix.";   
 
 		long totalExecTime = 0L;
 		long size = 0;
 		Dataset dataset = TDBFactory.createDataset(location);
+		
 		Dataset dataset1 = TDBFactory.createDataset(location);
 		
 		if ( bracketWithReader )