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/08/11 11:26:08 UTC
svn commit: r1156553 - in /incubator/jena/Experimental/TxTDB/trunk:
src-dev/tx/ src/main/java/com/hp/hpl/jena/tdb/transaction/
src/test/java/com/hp/hpl/jena/tdb/transaction/
Author: andy
Date: Thu Aug 11 09:26:08 2011
New Revision: 1156553
URL: http://svn.apache.org/viewvc?rev=1156553&view=rev
Log:
Bug fix: abort was removing queued commits.
Modified:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSystem.java
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java?rev=1156553&r1=1156552&r2=1156553&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java Thu Aug 11 09:26:08 2011
@@ -69,6 +69,10 @@ public class DevTx
// * B+Tree and caching root block.
// BPT created per transaction so safe (?).
+ // Design:
+ // Writing journal during a transaction, not just in prepare (scale)
+ // Write blobs via journal.
+
// Tidy up
// See HACK (BPTreeNode)
// See [TxTDB:PATCH-UP]
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java?rev=1156553&r1=1156552&r2=1156553&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java Thu Aug 11 09:26:08 2011
@@ -112,8 +112,11 @@ public class Transaction
for ( NodeTableTrans x : nodeTableTrans )
x.abort(this) ;
- // [TxTDB:TODO] : No - truncates a pending transaction.
- journal.truncate(0) ;
+
+ // [TxTDB:TODO]
+ // journal.truncate to last commit
+ // No need currently as the jounral is only written in prepare.
+
state = TxnState.ABORTED ;
txnMgr.notifyAbort(this) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java?rev=1156553&r1=1156552&r2=1156553&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java Thu Aug 11 09:26:08 2011
@@ -62,6 +62,7 @@ public class TransactionManager
// Transactions that have commited (and the journal is written) but haven't
// writted back to the main database.
+ int maxQueue = 0 ;
List<Transaction> commitedAwaitingFlush = new ArrayList<Transaction>() ;
static AtomicLong transactionId = new AtomicLong(1) ;
@@ -191,6 +192,7 @@ public class TransactionManager
{
// Can't make permanent at the moment.
commitedAwaitingFlush.add(txn) ;
+ maxQueue = Math.max(commitedAwaitingFlush.size(), maxQueue) ;
log("Queue commit flush", txn) ;
queue.add(txn) ;
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java?rev=1156553&r1=1156552&r2=1156553&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestTransSeq.java Thu Aug 11 09:26:08 2011
@@ -243,11 +243,6 @@ public abstract class AbstractTestTransS
StoreConnection sConn = getStoreConnection() ;
DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
- // IF
- // dsgR1.close() ;
- // THEN it works.
- // ==> deplay replay
-
DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
dsgW1.add(q1) ;
dsgW1.commit() ;
@@ -262,6 +257,9 @@ public abstract class AbstractTestTransS
DatasetGraphTxn dsgW3 = sConn.begin(ReadWrite.WRITE) ;
dsgW3.add(q3) ;
+ // Can see W1
+ assertTrue(dsgW3.contains(q1)) ;
+ assertFalse(dsgW3.contains(q2)) ;
dsgW3.commit() ;
dsgW3.close() ;
assertFalse(dsgR1.contains(q3)) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSystem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSystem.java?rev=1156553&r1=1156552&r2=1156553&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSystem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransSystem.java Thu Aug 11 09:26:08 2011
@@ -47,12 +47,13 @@ import com.hp.hpl.jena.tdb.base.file.Loc
/** System testing of the transactions. */
public class TestTransSystem
{
+ //static { SystemTDB.setFileMode(FileMode.direct) ; }
static { org.openjena.atlas.logging.Log.setLog4j() ; }
private static Logger log = LoggerFactory.getLogger(TestTransSystem.class) ;
- static final int Iterations = 10 ;
+ static final int Iterations = 1000 ;
// Output style.
- static boolean inlineProgress = false ; // (! log.isDebugEnabled()) && Iterations > 20 ;
+ static boolean inlineProgress = true ; // (! log.isDebugEnabled()) && Iterations > 20 ;
static boolean logging = ! inlineProgress ; // (! log.isDebugEnabled()) && Iterations > 20 ;
/*
@@ -60,27 +61,27 @@ public class TestTransSystem
* Others?
*/
-// static final int numReaderTasks = 5 ; // Add some
+// static final int numReaderTasks = 5 ;
// static final int numWriterTasksA = 1 ;
// static final int numWriterTasksC = 5 ;
//
// static final int readerSeqRepeats = 5 ;
// static final int readerMaxPause = 50 ;
//
-// static final int writerAbortSeqRepeats = 0 ;
+// static final int writerAbortSeqRepeats = 1 ;
// static final int writerCommitSeqRepeats = 5 ;
- // static final int writerMaxPause = 20 ;
+// static final int writerMaxPause = 20 ;
- static final int numReaderTasks = 5 ; // Add some
- static final int numWriterTasksA = 5 ;
+ static final int numReaderTasks = 5 ;
+ static final int numWriterTasksA = 2 ; // PC had 5
static final int numWriterTasksC = 5 ;
- static final int readerSeqRepeats = 8 ;
- static final int readerMaxPause = 100 ;
+ static final int readerSeqRepeats = 8 ; // PC had 8
+ static final int readerMaxPause = 25 ; // PC had 100
static final int writerAbortSeqRepeats = 4 ;
static final int writerCommitSeqRepeats = 4 ;
- static final int writerMaxPause = 50 ;
+ static final int writerMaxPause = 20 ; // PC had 50
public static void main(String...args)
@@ -94,8 +95,8 @@ public class TestTransSystem
for ( i = 0 ; i < Iterations ; i++ )
{
- if (!logging)
- log.info("Iteration: %d\n", i) ;
+ if (!inlineProgress && logging)
+ log.info(format("Iteration: %d\n", i)) ;
if ( inlineProgress )
{
if ( i%N == 0 )
@@ -113,8 +114,6 @@ public class TestTransSystem
println() ;
printf("DONE (%03d)\n",i) ;
}
- if (inlineProgress)
- printf("DONE (%03d)\n",i) ;
if (logging)
log.info("FINISH ({})", i) ;
}