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 )