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/30 23:01:01 UTC
svn commit: r1163380 - in /incubator/jena/Experimental/TxTDB/trunk:
src-dev/tx/ src/main/java/com/hp/hpl/jena/tdb/base/file/
src/main/java/com/hp/hpl/jena/tdb/base/objectfile/
src/main/java/com/hp/hpl/jena/tdb/nodetable/
src/main/java/com/hp/hpl/jena/t...
Author: andy
Date: Tue Aug 30 21:00:59 2011
New Revision: 1163380
URL: http://svn.apache.org/viewvc?rev=1163380&view=rev
Log:
Mysterious
Added:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java (contents, props changed)
- copied, changed from r1163263, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java
Modified:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Builder.java
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileFactory.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTable.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableCache.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableFactory.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableLogger.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableNative.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableSink.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableWrapper.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/Builder.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetBuilderTxn.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/JournalControl.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileMem.java
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestNodeTableTrans.java
incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransMem.java
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Builder.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Builder.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Builder.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Builder.java Tue Aug 30 21:00:59 2011
@@ -112,10 +112,11 @@ public final class Builder
public static ObjectFile createObjectFile(FileSet fileset)
{
+ String x = fileset.filename(Names.extNodeData) ;
if ( fileset.isMem() )
- return FileFactory.createObjectFileMem() ;
+ return FileFactory.createObjectFileMem(x) ;
else
- return FileFactory.createObjectFileDisk(fileset.filename(Names.extNodeData)) ;
+ return FileFactory.createObjectFileDisk(x) ;
}
private static Params params = new Params() ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java Tue Aug 30 21:00:59 2011
@@ -18,21 +18,22 @@
package tx;
-import java.util.Iterator;
+import java.util.Iterator ;
import org.openjena.atlas.lib.FileOps ;
-import org.openjena.atlas.lib.Pair;
+import org.openjena.atlas.lib.Pair ;
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.tdb.DatasetGraphTxn;
-import com.hp.hpl.jena.tdb.ReadWrite;
-import com.hp.hpl.jena.tdb.StoreConnection;
-import com.hp.hpl.jena.tdb.base.file.Location;
-import com.hp.hpl.jena.tdb.nodetable.NodeTable;
-import com.hp.hpl.jena.tdb.store.NodeId;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.tdb.DatasetGraphTxn ;
+import com.hp.hpl.jena.tdb.ReadWrite ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
+import com.hp.hpl.jena.tdb.store.NodeId ;
public class Report_JENA91 {
+ //static { Log.setLog4j() ; }
static Location LOC = Location.mem() ; // new Location("tmp/J91") ;
static {
Copied: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java (from r1163263, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java?p2=incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java&p1=incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java&r1=1163263&r2=1163380&rev=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java Tue Aug 30 21:00:59 2011
@@ -18,62 +18,96 @@
package tx;
-import java.util.Iterator;
+import java.util.Iterator ;
import org.openjena.atlas.lib.FileOps ;
-import org.openjena.atlas.lib.Pair;
+import org.openjena.atlas.lib.Pair ;
+import org.openjena.atlas.logging.Log ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.tdb.DatasetGraphTxn ;
+import com.hp.hpl.jena.tdb.ReadWrite ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
+import com.hp.hpl.jena.tdb.store.NodeId ;
-import com.hp.hpl.jena.graph.Node;
-import com.hp.hpl.jena.tdb.DatasetGraphTxn;
-import com.hp.hpl.jena.tdb.ReadWrite;
-import com.hp.hpl.jena.tdb.StoreConnection;
-import com.hp.hpl.jena.tdb.base.file.Location;
-import com.hp.hpl.jena.tdb.nodetable.NodeTable;
-import com.hp.hpl.jena.tdb.store.NodeId;
-
-public class Report_JENA91 {
+public class Report_JENA91a {
+
+ static { Log.setLog4j() ; }
+ static Logger log = LoggerFactory.getLogger("JENA-91") ;
- static Location LOC = Location.mem() ; // new Location("tmp/J91") ;
+ static Location LOC = Location.mem() ;
+ //static Location LOC = new Location("tmp/J91") ;
static {
if ( ! LOC.isMem() )
FileOps.clearDirectory(LOC.getDirectoryPath()) ;
}
- // Make sure you have "false" in FileFactory.createObjectFileMem
- // Later: go back and flip to get old mem specific failure.
+ // Note to AFS:
+ // **** Make sure you have "false" in FileFactory.createObjectFileMem
+ // **** Later: go back and flip to get old mem specific failure.
+
+ // ?? Offset in W3 should be offset of W2 + offset of W1 (=base)
+ // ?? Maybe it's offset of base only.
private static StoreConnection sConn = StoreConnection.make(LOC) ;
private static Node g = Node.createURI("g") ;
private static Node s = Node.createURI("s") ;
private static Node p = Node.createURI("p") ;
+ private static Node o0 = Node.createLiteral("o") ;
private static Node o1 = Node.createLiteral("o1") ;
private static Node o2 = Node.createLiteral("o2") ;
private static Node o3 = Node.createLiteral("o3") ;
public static void main(String[] args) {
+
+// DatasetGraphTxn dsgW0 = sConn.begin(ReadWrite.WRITE) ;
+// dsgW0.add(g, s, p, o0) ;
+// dsgW0.commit() ;
+// dsgW0.close() ;
+
+
+ log.info("Begin: R1") ;
DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
- // dumpNodeTable("R1", dsgR1) ;
+ dumpNodeTable("R1", dsgR1) ;
+ log.info("Begin: W1") ;
DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
dsgW1.add(g, s, p, o1) ;
- dsgW1.commit() ;
+ dumpNodeTable("R1-0", dsgR1) ;
dumpNodeTable("W1", dsgW1) ;
- dumpNodeTable("R1", dsgR1) ;
+ log.info("Commit: W1") ;
+ dsgW1.commit() ;
+ dsgW1.close() ;
+ dumpNodeTable("R1-1", dsgR1) ;
+
+ //ObjectFileStorage.logging = true ;
+ log.info("Begin: W2") ;
DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
dsgW2.add(g, s, p, o2) ;
- dsgW2.commit() ;
- dumpNodeTable("W2", dsgW2) ;
- dumpNodeTable("R1", dsgR1) ;
+ dumpNodeTable("R1-2", dsgR1) ;
+ dumpNodeTable("W2", dsgW2) ;
+ log.info("Commit: W2") ;
+ dsgW2.commit() ;
+ dsgW2.close() ;
+ dumpNodeTable("R1-3", dsgR1) ;
+
+ log.info("Begin: W3") ;
DatasetGraphTxn dsgW3 = sConn.begin(ReadWrite.WRITE) ;
dsgW3.add(g, s, p, o3) ;
+ dumpNodeTable("R1-4", dsgR1) ;
dumpNodeTable("W3", dsgW3) ;
- dumpNodeTable("R1", dsgR1) ;
+ log.info("Commit: W3") ;
dsgW3.commit() ;
-
+ dumpNodeTable("R1-5", dsgR1) ;
dsgR1.close() ;
+
System.out.println("DONE") ;
}
Propchange: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/Report_JENA91a.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileFactory.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileFactory.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileFactory.java Tue Aug 30 21:00:59 2011
@@ -17,8 +17,8 @@ public class FileFactory
public static StringFile createStringFileDisk(String filename)
{ return new StringFile(createObjectFileDisk(filename)) ; }
- public static StringFile createStringFileMem()
- { return new StringFile(createObjectFileMem()) ; }
+ public static StringFile createStringFileMem(String filename)
+ { return new StringFile(createObjectFileMem(filename)) ; }
public static ObjectFile createObjectFileDisk(String filename)
{
@@ -26,15 +26,15 @@ public class FileFactory
return new ObjectFileStorage(file) ;
}
- public static ObjectFile createObjectFileMem()
+ public static ObjectFile createObjectFileMem(String filename)
{
if ( false )
// Older code.
- return new ObjectFileMem() ;
+ return new ObjectFileMem(filename) ;
else
{
// Newer way.
- BufferChannel file = BufferChannelMem.create("mem") ;
+ BufferChannel file = BufferChannelMem.create(filename) ;
return new ObjectFileStorage(file) ;
}
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java Tue Aug 30 21:00:59 2011
@@ -16,6 +16,8 @@ import org.openjena.atlas.iterator.Iter
import org.openjena.atlas.iterator.IteratorSlotted ;
import org.openjena.atlas.lib.Pair ;
import org.openjena.atlas.logging.Log ;
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
import com.hp.hpl.jena.tdb.base.block.Block ;
import com.hp.hpl.jena.tdb.base.file.BufferChannel ;
@@ -28,6 +30,14 @@ import com.hp.hpl.jena.tdb.sys.SystemTDB
public class ObjectFileStorage implements ObjectFile
{
+ private static Logger log = LoggerFactory.getLogger(ObjectFileStorage.class) ;
+ public static boolean logging = false ;
+ private void log(String fmt, Object... args)
+ {
+ if ( ! logging ) return ;
+ log.info(state()+" "+String.format(fmt, args)) ;
+ }
+
/*
* No synchronization - assumes that the caller has some appropriate lock
* because the combination of file and cache operations needs to be thread safe.
@@ -62,18 +72,23 @@ public class ObjectFileStorage implement
{
this.file = file ;
filesize = file.size() ;
+ log("File size: 0x%X, posn: 0x%X", filesize, file.position()) ;
+ //writeBuffer = null ;
writeBuffer = (bufferSize >= 0) ? ByteBuffer.allocate(bufferSize) : null ;
}
@Override
public long write(ByteBuffer bb)
{
+ log("W") ;
+
if ( inAllocWrite )
Log.fatal(this, "In the middle of an alloc-write") ;
inAllocWrite = false ;
if ( writeBuffer == null )
{
long x = rawWrite(bb) ;
+ log("W -> 0x%X", x);
return x ;
}
@@ -86,17 +101,20 @@ public class ObjectFileStorage implement
if ( writeBuffer.position()+spaceNeeded > writeBuffer.capacity() )
{
long x = rawWrite(bb) ;
+ log("W -> 0x%X", x);
return x ;
}
long loc = writeBuffer.position()+filesize ;
writeBuffer.putInt(len) ;
writeBuffer.put(bb) ;
+ log("W -> 0x%X", loc);
return loc ;
}
private long rawWrite(ByteBuffer bb)
{
+ log("RW %s", bb) ;
int len = bb.limit() - bb.position() ;
lengthBuffer.rewind() ;
lengthBuffer.putInt(len) ;
@@ -107,12 +125,17 @@ public class ObjectFileStorage implement
if ( x != len )
throw new FileException() ;
filesize = filesize+x+SizeOfInt ;
+
+ if ( logging )
+ log("Posn: %d", file.position());
+ log("RW ->0x%X",location) ;
return location ;
}
@Override
public Block allocWrite(int bytesSpace)
{
+ //log.info("AW("+bytesSpace+"):"+state()) ;
if ( inAllocWrite )
Log.fatal(this, "In the middle of an alloc-write") ;
@@ -130,6 +153,7 @@ public class ObjectFileStorage implement
ByteBuffer bb = ByteBuffer.allocate(bytesSpace) ;
allocBlock = new Block(filesize, bb) ;
allocLocation = -1 ;
+ //log.info("AW:"+state()+"-> ----") ;
return allocBlock ;
}
@@ -146,12 +170,14 @@ public class ObjectFileStorage implement
ByteBuffer bb = writeBuffer.slice() ;
allocBlock = new Block(allocLocation, bb) ;
+ //log.info("AW:"+state()+"->0x"+Long.toHexString(allocLocation)) ;
return allocBlock ;
}
@Override
public void completeWrite(Block block)
{
+ log("CW: %s @0x%X",block, allocLocation) ;
if ( ! inAllocWrite )
throw new FileException("Not in the process of an allocated write operation pair") ;
if ( allocBlock != null && ( allocBlock.getByteBuffer() != block.getByteBuffer() ) )
@@ -181,6 +207,7 @@ public class ObjectFileStorage implement
private void flushOutputBuffer()
{
+ log("Flush") ;
if ( writeBuffer == null ) return ;
if ( writeBuffer.position() == 0 ) return ;
long location = filesize ;
@@ -188,6 +215,7 @@ public class ObjectFileStorage implement
int x = file.write(writeBuffer) ;
filesize += x ;
writeBuffer.clear() ;
+ log("Flush") ;
}
@Override
@@ -211,6 +239,8 @@ public class ObjectFileStorage implement
@Override
public ByteBuffer read(long loc)
{
+ log("R(0x%X)", loc) ;
+
if ( inAllocWrite )
throw new FileException("In the middle of an alloc-write") ;
if ( loc < 0 )
@@ -253,6 +283,9 @@ public class ObjectFileStorage implement
}
ByteBuffer bb = ByteBuffer.allocate(len) ;
+ if ( len == 0 )
+ // Zero bytes.
+ return bb ;
x = file.read(bb, loc+SizeOfInt) ;
bb.flip() ;
if ( x != len )
@@ -283,7 +316,7 @@ public class ObjectFileStorage implement
public Iterator<Pair<Long, ByteBuffer>> all()
{
flushOutputBuffer() ;
- file.position(0) ;
+ //file.position(0) ;
ObjectIterator iter = new ObjectIterator(0, filesize) ;
//return iter ;
@@ -291,6 +324,15 @@ public class ObjectFileStorage implement
return Iter.concat(iter, new BufferIterator(writeBuffer)) ;
}
+ private String state()
+ {
+ if ( writeBuffer == null )
+ return String.format(getLabel()+": filesize=0x%X, file=(0x%X, 0x%X)", filesize, file.position(), file.size()) ;
+ else
+ return String.format(getLabel()+": filesize=0x%X, file=(0x%X, 0x%X), writeBuffer=(0x%X,0x%X)", filesize, file.position(), file.size(), writeBuffer.position(), writeBuffer.limit()) ;
+
+ }
+
private class BufferIterator extends IteratorSlotted<Pair<Long, ByteBuffer>> implements Iterator<Pair<Long, ByteBuffer>>
{
private ByteBuffer buffer ;
@@ -349,8 +391,11 @@ public class ObjectFileStorage implement
@Override
public Pair<Long, ByteBuffer> next()
{
+ // read, but reserving the file position.
long x = current ;
+ long filePosn = file.position() ;
ByteBuffer bb = read(current) ;
+ file.position(filePosn) ;
current = current + bb.limit() + 4 ;
return new Pair<Long, ByteBuffer>(x, bb) ;
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTable.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTable.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTable.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTable.java Tue Aug 30 21:00:59 2011
@@ -36,7 +36,11 @@ public interface NodeTable extends Sync,
public Iterator<Pair<NodeId, Node>> all() ;
/** The offset needed to predicate allocation difference between peristent tables - internal function */
- public NodeId allocOffset() ;
+ public NodeId allocOffset() ;
+
+ /** Any thing there? */
+ public boolean isEmpty() ;
+
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableCache.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableCache.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableCache.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableCache.java Tue Aug 30 21:00:59 2011
@@ -34,6 +34,7 @@ public class NodeTableCache implements N
// Cache update needed on NodeTable changes because a node may become "known"
private CacheSet<Node> notPresent ;
private NodeTable baseTable ;
+ private Object lock = new Object() ;
public static NodeTable create(NodeTable nodeTable, int nodeToIdCacheSize, int idToNodeCacheSize)
{
@@ -76,7 +77,7 @@ public class NodeTableCache implements N
if ( NodeId.isAny(id) )
return null ;
- synchronized (this)
+ synchronized (lock)
{
Node n = cacheLookup(id) ; // Includes known to not exist
if ( n != null )
@@ -98,7 +99,7 @@ public class NodeTableCache implements N
if ( node == Node.ANY )
return NodeId.NodeIdAny ;
- synchronized (this)
+ synchronized (lock)
{
// Check caches.
NodeId nodeId = cacheLookup(node) ;
@@ -171,6 +172,20 @@ public class NodeTableCache implements N
}
@Override
+ public boolean isEmpty()
+ {
+ synchronized (lock)
+ {
+ if ( node2id_Cache != null )
+ return node2id_Cache.isEmpty() ;
+ if ( id2node_Cache != null )
+ id2node_Cache.isEmpty() ;
+ // Write through.
+ return baseTable.isEmpty() ;
+ }
+ }
+
+ @Override
public synchronized void close()
{
if ( baseTable == null )
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableFactory.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableFactory.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableFactory.java Tue Aug 30 21:00:59 2011
@@ -58,10 +58,12 @@ public class NodeTableFactory
FileSet fsIdToNode, FileSet fsNodeToId,
int nodeToIdCacheSize, int idToNodeCacheSize)
{
+ String filename = fsIdToNode.filename(Names.extNodeData) ;
+
if ( fsNodeToId.isMem() )
{
Index nodeToId = indexBuilder.newIndex(FileSet.mem(), SystemTDB.nodeRecordFactory) ;
- ObjectFile objects = FileFactory.createObjectFileMem() ;
+ ObjectFile objects = FileFactory.createObjectFileMem(filename) ;
NodeTable nodeTable = new NodeTableNative(nodeToId, objects) ;
nodeTable = NodeTableCache.create(nodeTable, 100, 100) ;
@@ -74,7 +76,6 @@ public class NodeTableFactory
Index nodeToId = indexBuilder.newIndex(fsNodeToId, SystemTDB.nodeRecordFactory) ;
// Node table.
- String filename = fsIdToNode.filename(Names.extNodeData) ;
ObjectFile objects = FileFactory.createObjectFileDisk(filename);
NodeTable nodeTable = new NodeTableNative(nodeToId, objects) ;
nodeTable = NodeTableCache.create(nodeTable, nodeToIdCacheSize, idToNodeCacheSize) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableLogger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableLogger.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableLogger.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableLogger.java Tue Aug 30 21:00:59 2011
@@ -74,6 +74,14 @@ public class NodeTableLogger implements
}
@Override
+ public boolean isEmpty()
+ {
+ boolean b = nodeTable.isEmpty() ;
+ info("isEmpty() => "+b) ;
+ return b ;
+ }
+
+ @Override
public void sync()
{
info("sync()") ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableNative.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableNative.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableNative.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableNative.java Tue Aug 30 21:00:59 2011
@@ -242,6 +242,12 @@ public class NodeTableNative implements
@Override
public String toString() { return objects.getLabel() ; }
+
+ @Override
+ public boolean isEmpty()
+ {
+ return false ;
+ }
}
/*
* (c) Copyright 2008, 2009 Hewlett-Packard Development Company, LP
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableSink.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableSink.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableSink.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableSink.java Tue Aug 30 21:00:59 2011
@@ -57,7 +57,13 @@ public class NodeTableSink implements No
}
@Override
- public void sync() { }
+ public void sync() { }
+
+ @Override
+ public boolean isEmpty()
+ {
+ return false ;
+ }
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableWrapper.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableWrapper.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/nodetable/NodeTableWrapper.java Tue Aug 30 21:00:59 2011
@@ -58,12 +58,14 @@ public class NodeTableWrapper implements
}
@Override
+ public boolean isEmpty() { return nodeTable.isEmpty() ; }
+
+ @Override
public void sync() { nodeTable.sync() ; }
@Override
public void close()
{ nodeTable.close() ; }
-
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/Builder.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/Builder.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/Builder.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/setup/Builder.java Tue Aug 30 21:00:59 2011
@@ -173,9 +173,9 @@ public class Builder
@Override
public ObjectFile buildObjectFile(FileSet fileSet, String ext)
{
- if ( fileSet.isMem() )
- return FileFactory.createObjectFileMem() ;
String filename = fileSet.filename(ext) ;
+ if ( fileSet.isMem() )
+ return FileFactory.createObjectFileMem(filename) ;
return FileFactory.createObjectFileDisk(filename) ;
}
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetBuilderTxn.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetBuilderTxn.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetBuilderTxn.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetBuilderTxn.java Tue Aug 30 21:00:59 2011
@@ -113,11 +113,11 @@ public class DatasetBuilderTxn
String objFilename = fsObjectFile.filename(Names.extNodeData+"-"+Names.extJournal) ;
ObjectFile objectFile ;
if ( fsObjectFile.isMem() )
- objectFile = FileFactory.createObjectFileMem() ;
+ objectFile = FileFactory.createObjectFileMem(objFilename) ;
else
objectFile = FileFactory.createObjectFileDisk(objFilename) ;
- NodeTableTrans ntt = new NodeTableTrans(fsObjectFile.getBasename(), ntBase, idx, objectFile) ;
+ NodeTableTrans ntt = new NodeTableTrans(txn ,fsObjectFile.getBasename(), ntBase, idx, objectFile) ;
txn.add(ntt) ;
// Add inline wrapper.
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/JournalControl.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/JournalControl.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/JournalControl.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/JournalControl.java Tue Aug 30 21:00:59 2011
@@ -213,7 +213,7 @@ public class JournalControl
{
syslog.info("Recovering node data: "+fileRef.getFilename()) ;
ObjectFile dataJrnl = FileFactory.createObjectFileDisk(objFilename) ;
- NodeTableTrans ntt = new NodeTableTrans(objFilename, baseNodeTable, new IndexMap(recordFactory), dataJrnl) ;
+ NodeTableTrans ntt = new NodeTableTrans(null, objFilename, baseNodeTable, new IndexMap(recordFactory), dataJrnl) ;
ntt.append() ;
ntt.close() ;
dataJrnl.close() ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/NodeTableTrans.java Tue Aug 30 21:00:59 2011
@@ -51,20 +51,23 @@ public class NodeTableTrans implements N
// Always zero currently but allows for future
private long journalStartOffset ;
private final String label ;
+ private final Transaction txn ; // Can be null (during recovery).
- public NodeTableTrans(String label, NodeTable sub, Index nodeIndex, ObjectFile journal)
+ public NodeTableTrans(Transaction txn, String label, NodeTable sub, Index nodeIndex, ObjectFile journal)
{
+ this.txn = txn ;
this.base = sub ;
this.nodeIndex = nodeIndex ;
this.journal = journal ;
this.label = label ;
// Show the way tables are wired up
- // log.info(String.format("NTT[%s #%s] %s", label, Integer.toHexString(hashCode()), sub)) ;
+ debug("NTT[%s #%s] %s", label, Integer.toHexString(hashCode()), sub) ;
}
public void setPassthrough(boolean v) { passthrough = v ; }
public NodeTable getBaseNodeTable() { return base ; }
public NodeTable getJournalTable() { return nodeTableJournal ; }
+ public Transaction getTransaction() { return txn ; }
@Override
public NodeId getAllocateNodeId(Node node)
@@ -117,19 +120,29 @@ public class NodeTableTrans implements N
@Override
public NodeId allocOffset()
{
- NodeId x = nodeTableJournal.allocOffset() ;
- return mapFromJournal(x) ;
+ NodeId x1 = nodeTableJournal.allocOffset() ;
+ NodeId x2 = mapFromJournal(x1) ;
+ debug("allocOffset: %s/%s %s -> %s [%d]", txn.getLabel(), label, x1, x2, offset) ;
+ return x2 ;
}
@Override
public void begin(Transaction txn)
{
+ if ( this.txn.getTxnId() != txn.getTxnId() )
+ throw new TDBException(String.format("Different transactions: %s %s", this.txn.getLabel(), txn.getLabel())) ;
+
passthrough = false ;
offset = base.allocOffset().getId() ;
// Any outstanding transactions
long journalOffset = journal.length() ;
- debug("begin: %s", label) ;
+ debug("begin: %s %s", txn.getLabel(), label) ;
+ debug("begin: base=%s offset=0x%X journalOffset=0x%X", base, offset, journalOffset) ;
+
+// base.allocOffset().getId() ; // DBG
+// journal.length() ; // DBG
+
offset += journalOffset ;
this.nodeTableJournal = new NodeTableNative(nodeIndex, journal) ;
this.nodeTableJournal = NodeTableCache.create(nodeTableJournal, CacheSize, CacheSize) ;
@@ -139,6 +152,8 @@ public class NodeTableTrans implements N
/** Copy from the journal file to the real file */
public /*temporary*/ void append()
{
+ debug("append: %s",label) ;
+
// Assumes all() is in order from low to high.
Iterator<Pair<NodeId, Node>> iter = nodeTableJournal.all() ;
for ( ; iter.hasNext() ; )
@@ -146,9 +161,11 @@ public class NodeTableTrans implements N
Pair<NodeId, Node> x = iter.next() ;
NodeId nodeId = x.getLeft() ;
Node node = x.getRight() ;
+ debug("append: %s -> %s", x, mapFromJournal(nodeId)) ;
+ // This does the write.
NodeId nodeId2 = base.getAllocateNodeId(node) ;
if ( ! nodeId2.equals(mapFromJournal(nodeId)) )
- throw new TDBException(String.format("Different ids for %s: allocated: expected %s, got %s\n", node, mapFromJournal(nodeId), nodeId2)) ;
+ throw new TDBException(String.format("Different ids for %s: allocated: expected %s, got %s", node, mapFromJournal(nodeId), nodeId2)) ;
}
}
@@ -175,12 +192,31 @@ public class NodeTableTrans implements N
private void writeNodeJournal()
{
+ if ( nodeTableJournal.isEmpty() )
+ return ;
+
+ NodeId x1 = base.allocOffset() ;
append() ;
+ NodeId x2 = base.allocOffset() ;
+
+ NodeId x3 = nodeTableJournal.allocOffset() ;
+ debug("writeNodeJournal: (base alloc before) %s -> (base alloc after) %s -> (nodeTableJournal) %s", x1, x2, x3) ;
+
nodeIndex.clear() ;
journal.truncate(journalStartOffset) ;
journal.sync() ;
base.sync() ;
- offset = base.allocOffset().getId() ;
+
+ offset = base.allocOffset().getId() ;
+//
+// long offset2 =
+// //debug("writeNodeJournal: %d -> %d", offset, offset2) ;
+// offset = offset2 ;
+//
+// // ??
+// long offset3 = nodeTableJournal.allocOffset().getId() ;
+// debug("writeNodeJournal: %d -> %d", offset2, offset3) ;
+
passthrough = true ;
}
@@ -218,6 +254,12 @@ public class NodeTableTrans implements N
}
@Override
+ public boolean isEmpty()
+ {
+ return nodeTableJournal.isEmpty() && base.isEmpty() ;
+ }
+
+ @Override
public void sync()
{}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileMem.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileMem.java Tue Aug 30 21:00:59 2011
@@ -15,7 +15,10 @@ public class TestStringFileMem extends A
@Override
protected StringFile createStringFile()
{
- return FileFactory.createStringFileMem() ;
+ // OLD
+ //return new StringFile(new ObjectFileMem(("mem-test"))) ;
+ // NEW
+ return FileFactory.createStringFileMem("mem-test") ;
}
@Override
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestNodeTableTrans.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestNodeTableTrans.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestNodeTableTrans.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/AbstractTestNodeTableTrans.java Tue Aug 30 21:00:59 2011
@@ -39,20 +39,20 @@ public abstract class AbstractTestNodeTa
abstract protected ObjectFile createObjectFile() ;
abstract protected Location getLocation() ;
- private NodeTableTrans create(Node...nodes)
+ private NodeTableTrans create(Transaction txn, Node...nodes)
{
NodeTable base = SetupTDB.makeNodeTable(getLocation()) ;
for ( Node n : nodes )
base.getAllocateNodeId(n) ;
- return create(base) ;
+ return create(txn, base) ;
}
- private NodeTableTrans create(NodeTable base)
+ private NodeTableTrans create(Transaction txn, NodeTable base)
{
RecordFactory recordFactory = new RecordFactory(SystemTDB.LenNodeHash, SystemTDB.SizeOfNodeId) ;
Index idx = new IndexMap(recordFactory) ;
ObjectFile objectFile = createObjectFile() ;
- NodeTableTrans ntt = new NodeTableTrans("test", base, idx, objectFile) ;
+ NodeTableTrans ntt = new NodeTableTrans(txn, "test", base, idx, objectFile) ;
return ntt ;
}
@@ -76,8 +76,8 @@ public abstract class AbstractTestNodeTa
@Test public void nodetrans_01()
{
- NodeTableTrans ntt = create() ;
Transaction txn = createTxn(11) ;
+ NodeTableTrans ntt = create(txn) ;
ntt.begin(txn) ;
ntt.abort(txn) ;
}
@@ -85,10 +85,10 @@ public abstract class AbstractTestNodeTa
@Test public void nodetrans_02()
{
- NodeTableTrans ntt = create() ;
+ Transaction txn = createTxn(11) ;
+ NodeTableTrans ntt = create(txn) ;
NodeTable nt0 = ntt.getBaseNodeTable() ;
- Transaction txn = createTxn(11) ;
ntt.begin(txn) ;
// Add a node
NodeId nodeId = ntt.getAllocateNodeId(node1) ;
@@ -108,10 +108,10 @@ public abstract class AbstractTestNodeTa
@Test public void nodetrans_03()
{
- NodeTableTrans ntt = create() ;
- NodeTable nt0 = ntt.getBaseNodeTable() ;
-
Transaction txn = createTxn(11) ;
+ NodeTableTrans ntt = create(txn) ;
+ NodeTable nt0 = ntt.getBaseNodeTable() ;
+
ntt.begin(txn) ;
// Add a node
NodeId nodeId = ntt.getAllocateNodeId(node1) ;
@@ -130,9 +130,9 @@ public abstract class AbstractTestNodeTa
@Test public void nodetrans_04()
{
- NodeTableTrans ntt = create(node1) ;
- NodeTable nt0 = ntt.getBaseNodeTable() ;
Transaction txn = createTxn(11) ;
+ NodeTableTrans ntt = create(txn, node1) ;
+ NodeTable nt0 = ntt.getBaseNodeTable() ;
ntt.begin(txn) ;
// Add a node
NodeId nodeId = ntt.getAllocateNodeId(node2) ;
@@ -151,7 +151,7 @@ public abstract class AbstractTestNodeTa
// False test. Not valid after ntt.commitClearup
// @Test
-// public void nodetrans_05()
+// public void nodetrans_XX_01()
// {
// // 2 transactions - no blocking reader
// NodeTableTrans ntt = create(node1) ;
@@ -179,65 +179,65 @@ public abstract class AbstractTestNodeTa
// assertEquals(nodeId3, ntt.getBaseNodeTable().getNodeIdForNode(node3)) ;
// }
- @Test
- public void nodetrans_06()
- {
- // 2 transactions - blocking reader
- NodeTableTrans ntt = create(node1) ;
- NodeTable ntt0 = ntt.getBaseNodeTable() ;
- NodeId nodeId1 = ntt0.getNodeIdForNode(node1) ;
-
- Transaction txn1 = createTxn(11) ;
- ntt.begin(txn1) ;
- NodeId nodeId2 = ntt.getAllocateNodeId(node2) ;
- assertNotEquals(nodeId1, nodeId2) ;
- ntt.commitPrepare(txn1) ;
-
- assertEquals(nodeId1, ntt0.getNodeIdForNode(node1)) ;
- assertEquals(nodeId2, ntt0.getNodeIdForNode(node2)) ;
-
- // READ - don't enact
-
- Transaction txn2 = createTxn(12) ;
- ntt.begin(txn2) ;
- assertEquals(nodeId1, ntt.getNodeIdForNode(node1)) ;
- ntt.getNodeIdForNode(node2) ;
- assertEquals(nodeId2, ntt.getNodeIdForNode(node2)) ;
-
- NodeId nodeId3 = ntt.getAllocateNodeId(node3) ;
- assertEquals(nodeId3, ntt.getNodeIdForNode(node3)) ;
- ntt.commitPrepare(txn2) ;
-
- // READ ends.
-
- ntt.commitEnact(txn1) ;
- ntt.commitClearup(txn1) ;
-
- ntt.commitEnact(txn2) ;
- ntt.commitClearup(txn2) ;
-
- assertEquals(nodeId1, ntt.getBaseNodeTable().getNodeIdForNode(node1)) ;
- assertEquals(nodeId2, ntt.getBaseNodeTable().getNodeIdForNode(node2)) ;
- assertEquals(nodeId3, ntt.getBaseNodeTable().getNodeIdForNode(node3)) ;
- }
+// // False test. One transaction - one NTT
+// @Test
+// public void nodetrans_XX_02()
+// {
+// // 2 transactions - blocking reader
+// Transaction txn1 = createTxn(11) ;
+// NodeTableTrans ntt = create(txn1, node1) ;
+// NodeTable ntt0 = ntt.getBaseNodeTable() ;
+// NodeId nodeId1 = ntt0.getNodeIdForNode(node1) ;
+//
+// ntt.begin(txn1) ;
+// NodeId nodeId2 = ntt.getAllocateNodeId(node2) ;
+// assertNotEquals(nodeId1, nodeId2) ;
+// ntt.commitPrepare(txn1) ;
+//
+// assertEquals(nodeId1, ntt0.getNodeIdForNode(node1)) ;
+// assertEquals(nodeId2, ntt0.getNodeIdForNode(node2)) ;
+//
+// // READ - don't enact
+//
+// Transaction txn2 = createTxn(12) ;
+// ntt.begin(txn2) ;
+// assertEquals(nodeId1, ntt.getNodeIdForNode(node1)) ;
+// ntt.getNodeIdForNode(node2) ;
+// assertEquals(nodeId2, ntt.getNodeIdForNode(node2)) ;
+//
+// NodeId nodeId3 = ntt.getAllocateNodeId(node3) ;
+// assertEquals(nodeId3, ntt.getNodeIdForNode(node3)) ;
+// ntt.commitPrepare(txn2) ;
+//
+// // READ ends.
+//
+// ntt.commitEnact(txn1) ;
+// ntt.commitClearup(txn1) ;
+//
+// ntt.commitEnact(txn2) ;
+// ntt.commitClearup(txn2) ;
+//
+// assertEquals(nodeId1, ntt.getBaseNodeTable().getNodeIdForNode(node1)) ;
+// assertEquals(nodeId2, ntt.getBaseNodeTable().getNodeIdForNode(node2)) ;
+// assertEquals(nodeId3, ntt.getBaseNodeTable().getNodeIdForNode(node3)) ;
+// }
@Test
- public void nodetrans_07()
+ public void nodetrans_05()
{
// 2 transactions - no blocking reader - create a second NodeTableTrans
- NodeTableTrans ntt1 = create(node1) ;
+ Transaction txn1 = createTxn(11) ;
+ NodeTableTrans ntt1 = create(txn1, node1) ;
NodeId nodeId1 = ntt1.getBaseNodeTable().getNodeIdForNode(node1) ;
- Transaction txn1 = createTxn(11) ;
ntt1.begin(txn1) ;
NodeId nodeId2 = ntt1.getAllocateNodeId(node2) ;
ntt1.commitPrepare(txn1) ;
ntt1.commitEnact(txn1) ;
ntt1.commitClearup(txn1) ;
- NodeTableTrans ntt2 = create(ntt1.getBaseNodeTable()) ;
-
- Transaction txn2 = createTxn(12) ;
+ Transaction txn2 = createTxn(12) ;
+ NodeTableTrans ntt2 = create(txn2, ntt1.getBaseNodeTable()) ;
ntt2.begin(txn2) ;
assertEquals(nodeId1, ntt2.getNodeIdForNode(node1)) ;
assertEquals(nodeId2, ntt2.getNodeIdForNode(node2)) ;
@@ -253,22 +253,20 @@ public abstract class AbstractTestNodeTa
}
@Test
- public void nodetrans_08()
+ public void nodetrans_06()
{
// 2 transactions - blocking reader - create a second NodeTableTrans
- NodeTableTrans ntt1 = create(node1) ;
+ Transaction txn1 = createTxn(11) ;
+ NodeTableTrans ntt1 = create(txn1, node1) ;
NodeId nodeId1 = ntt1.getBaseNodeTable().getNodeIdForNode(node1) ;
- Transaction txn1 = createTxn(11) ;
ntt1.begin(txn1) ;
NodeId nodeId2 = ntt1.getAllocateNodeId(node2) ;
ntt1.commitPrepare(txn1) ;
// READ - don't enact
-
- NodeTableTrans ntt2 = create(ntt1.getBaseNodeTable()) ;
-
Transaction txn2 = createTxn(12) ;
+ NodeTableTrans ntt2 = create(txn2, ntt1.getBaseNodeTable()) ;
ntt2.begin(txn2) ;
assertEquals(nodeId1, ntt2.getNodeIdForNode(node1)) ;
assertEquals(nodeId2, ntt2.getNodeIdForNode(node2)) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransMem.java?rev=1163380&r1=1163379&r2=1163380&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransMem.java Tue Aug 30 21:00:59 2011
@@ -27,8 +27,7 @@ public class TestNodeTableTransMem exten
@Override
protected ObjectFile createObjectFile()
{
-// FileSet fs = new FileSet(getLocation(), "data") ;
- return FileFactory.createObjectFileMem() ;
+ return FileFactory.createObjectFileMem("mem-trans") ;
}
@Override