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/06/21 20:00:58 UTC
svn commit: r1138110 - 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/base/page/
src/main/java/com/hp/hpl/jena/t...
Author: andy
Date: Tue Jun 21 18:00:57 2011
New Revision: 1138110
URL: http://svn.apache.org/viewvc?rev=1138110&view=rev
Log: (empty)
Added:
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java (with props)
Modified:
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannel.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelFile.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileBase.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFile.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileLogger.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileMem.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileSink.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/base/objectfile/ObjectFileWrapper.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/page/PageBlockMgr.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/BlockMgrJournal.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/ObjectFileTrans.java
incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.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=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java Tue Jun 21 18:00:57 2011
@@ -7,6 +7,9 @@ public class DevTx
// Delete BlockMgrFile.
+ // Add changed flag to DatsetTDB so sync can be skipped.
+ // Other routes to change? Prefixes?
+
// Config
// One config file?
// Cache sizes
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=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java Tue Jun 21 18:00:57 2011
@@ -105,19 +105,21 @@ public class TxMain
//SystemTDB.setFileMode(FileMode.direct) ;
DatasetGraphTDB dsg0 = build() ;
-// load("D.ttl", dsg0) ;
-// query("SELECT * { ?s ?p ?o }", dsg0) ;
+ load("D.ttl", dsg0) ;
+ query("SELECT * { ?s ?p ?o }", dsg0) ;
//// exit(0) ;
// dsg0.sync() ;
System.out.println("Txn") ;
DatasetGraphTxnTDB dsg = buildTx(dsg0) ;
- load("D.ttl", dsg) ;
+ load("D1.ttl", dsg) ;
//dsg.commit() ;
//query("SELECT (Count(*) AS ?c) { ?s ?p ?o }", dsg) ;
System.out.println("Query 1") ;
query("SELECT * { ?s ?p ?o }", dsg) ;
+ System.out.println("Query 2") ;
+ query("SELECT * { ?s ?p ?o }", dsg0) ;
exit(0) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannel.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannel.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannel.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannel.java Tue Jun 21 18:00:57 2011
@@ -66,6 +66,10 @@ public interface BufferChannel extends S
/** Length of storage, in bytes.*/
public long size() ;
+
+ /** useful display string */
+ public String getLabel() ;
+
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelFile.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelFile.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelFile.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelFile.java Tue Jun 21 18:00:57 2011
@@ -10,6 +10,7 @@ import java.io.IOException ;
import java.nio.ByteBuffer ;
import org.openjena.atlas.io.IO ;
+import org.openjena.atlas.lib.FileOps ;
public class BufferChannelFile implements BufferChannel
@@ -92,6 +93,17 @@ public class BufferChannelFile implement
catch (IOException e) { IO.exception(e) ; }
}
+ @Override
+ public String getLabel()
+ {
+ return FileOps.basename(file.getFilename()) ;
+ }
+
+ @Override
+ public String toString()
+ {
+ return file.getFilename() ;
+ }
}
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java Tue Jun 21 18:00:57 2011
@@ -18,7 +18,6 @@ public class BufferChannelMem implements
private static int INIT_SIZE = 1024 ;
private static int INC_SIZE = 1024 ;
-
public BufferChannelMem()
{
this("unnamed") ;
@@ -158,6 +157,18 @@ public class BufferChannelMem implements
if ( bytes == null )
throw new StorageException("Closed: "+name) ;
}
+
+ @Override
+ public String getLabel()
+ {
+ return name ;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name ;
+ }
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileBase.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileBase.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/FileBase.java Tue Jun 21 18:00:57 2011
@@ -52,6 +52,7 @@ public class FileBase implements Sync, C
{ throw new FileException("FileBase.sync", ex) ; }
}
+ public String getFilename() { return filename ; }
}
/*
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFile.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFile.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFile.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFile.java Tue Jun 21 18:00:57 2011
@@ -25,6 +25,9 @@ public interface ObjectFile extends Sync
{
public static final String type = "object" ;
+ /** A label to identify this ObjectFile - liek toString, except it must be implemented */
+ public String getLabel() ;
+
/** Allocate space for a write - pass this buffer to completeWrite */
public Block allocWrite(int bytesSpace) ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileLogger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileLogger.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileLogger.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileLogger.java Tue Jun 21 18:00:57 2011
@@ -87,6 +87,12 @@ public class ObjectFileLogger implements
}
@Override
+ public String getLabel()
+ {
+ return other.getLabel() ;
+ }
+
+ @Override
public long length()
{
info("") ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileMem.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileMem.java Tue Jun 21 18:00:57 2011
@@ -1,5 +1,6 @@
/*
* (c) Copyright 2008, 2009 Hewlett-Packard Development Company, LP
+ * (c) Copyright 2011 Epimorphics Ltd.
* All rights reserved.
* [See end of file]
*/
@@ -28,14 +29,16 @@ import org.openjena.atlas.lib.ByteBuffer
public class ObjectFileMem implements ObjectFile
{
- List<ByteBuffer> buffers = new ArrayList<ByteBuffer>() ;
- boolean closed = false ;
+ private List<ByteBuffer> buffers = new ArrayList<ByteBuffer>() ;
+ private boolean closed = false ;
+
+ private final String label ;
public ObjectFileMem(String label)
- { }
+ { this.label = label ; }
public ObjectFileMem()
- { }
+ { this("ObjectFileMem") ; }
// Could have been ObjectFileStorage + a byte array.
@@ -81,7 +84,6 @@ public class ObjectFileMem implements Ob
}
private Block allocBlock = null ;
-
@Override
public Block allocWrite(int bytesSpace)
{
@@ -150,10 +152,14 @@ public class ObjectFileMem implements Ob
closed = true ;
}
+ @Override
+ public String getLabel() { return label ; }
+
}
/*
* (c) Copyright 2008, 2009 Hewlett-Packard Development Company, LP
+ * (c) Copyright 2011 Epimorphics Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileSink.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileSink.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileSink.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileSink.java Tue Jun 21 18:00:57 2011
@@ -64,6 +64,9 @@ public class ObjectFileSink implements O
@Override
public long length()
{ return id ; }
+
+ @Override
+ public String getLabel() { return "ObjectFielSink" ; }
}
/*
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=1138110&r1=1138109&r2=1138110&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 Jun 21 18:00:57 2011
@@ -238,7 +238,7 @@ public class ObjectFileStorage implement
lengthBuffer.clear() ;
int x = file.read(lengthBuffer, loc) ;
if ( x != 4 )
- throw new FileException("ObjectFile.read: Failed to read the length : got "+x+" bytes") ;
+ throw new FileException("ObjectFile.read("+loc+")["+filesize+"]: Failed to read the length : got "+x+" bytes") ;
int len = lengthBuffer.getInt(0) ;
ByteBuffer bb = ByteBuffer.allocate(len) ;
x = file.read(bb, loc+SizeOfInt) ;
@@ -262,6 +262,12 @@ public class ObjectFileStorage implement
public void sync() { flushOutputBuffer() ; file.sync() ; }
@Override
+ public String getLabel() { return file.getLabel() ; }
+
+ @Override
+ public String toString() { return file.getLabel() ; }
+
+ @Override
public Iterator<Pair<Long, ByteBuffer>> all()
{
flushOutputBuffer() ;
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileWrapper.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileWrapper.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileWrapper.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileWrapper.java Tue Jun 21 18:00:57 2011
@@ -40,6 +40,9 @@ public class ObjectFileWrapper implement
public ByteBuffer read(long id) { return other.read(id) ; }
@Override
+ public String getLabel() { return other.getLabel() ; }
+
+ @Override
public Iterator<Pair<Long, ByteBuffer>> all() { return other.all() ; }
@Override
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/page/PageBlockMgr.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/page/PageBlockMgr.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/page/PageBlockMgr.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/page/PageBlockMgr.java Tue Jun 21 18:00:57 2011
@@ -67,8 +67,9 @@ public class PageBlockMgr<T extends Page
public void write(T page)
{
- if ( ! page.getBackingBlock().isModified() )
- warn("Page for block "+page.getBackingBlock().getId()+" not modified") ;
+ // Catch updates to non-trasnactioned datasetgraph. Check in BlockMgrJournal instead.
+// if ( ! page.getBackingBlock().isModified() )
+// warn("Page for block "+page.getBackingBlock().getId()+" not modified") ;
Block blk = pageFactory.toBlock(page) ;
blockMgr.write(blk) ;
Added: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java?rev=1138110&view=auto
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java (added)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java Tue Jun 21 18:00:57 2011
@@ -0,0 +1,137 @@
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ * [See end of file]
+ */
+
+package com.hp.hpl.jena.tdb.store;
+
+import java.util.Map ;
+import java.util.Set ;
+
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+import com.hp.hpl.jena.shared.PrefixMapping ;
+import com.hp.hpl.jena.sparql.core.DatasetPrefixStorage ;
+
+public class DatasetPrefixStorageLogger implements DatasetPrefixStorage
+{
+ private final DatasetPrefixStorage other ;
+ private String label = null ;
+ private final static Logger log = LoggerFactory.getLogger(DatasetPrefixStorage.class) ;
+
+ public DatasetPrefixStorageLogger(DatasetPrefixStorage other)
+ {
+ this.other = other ;
+ }
+
+ @Override
+ public void close() { info("close") ; }
+
+ @Override
+ public void sync() { info("sync") ; }
+
+ @Override
+ public Set<String> graphNames()
+ {
+ Set<String> x = other.graphNames() ;
+ info("graphNames:"+x) ;
+ return x ;
+ }
+
+ @Override
+ public String readPrefix(String graphName, String prefix)
+ {
+ String x = other.readPrefix(graphName, prefix) ;
+ info("readPrefix("+graphName+", "+prefix+") -> "+x) ;
+ return x ;
+ }
+
+ @Override
+ public String readByURI(String graphName, String uriStr)
+ {
+ String x = other.readByURI(graphName, uriStr) ;
+ info("readByURI("+graphName+", "+uriStr+") -> "+x) ;
+ return x ;
+ }
+
+ @Override
+ public Map<String, String> readPrefixMap(String graphName)
+ {
+ Map<String, String> x = other.readPrefixMap(graphName) ;
+ info("readPrefixMap("+graphName+") -> "+x) ;
+ return x ;
+ }
+
+ @Override
+ public void insertPrefix(String graphName, String prefix, String uri)
+ {
+ info("insertPrefix("+graphName+", "+prefix+", "+uri+")") ;
+ other.insertPrefix(graphName, prefix, uri) ;
+ }
+
+ @Override
+ public void loadPrefixMapping(String graphName, PrefixMapping pmap)
+ {
+ info("loadPrefixMapping("+graphName+", "+pmap+")") ;
+ other.loadPrefixMapping(graphName, pmap) ;
+ }
+
+ @Override
+ public void removeFromPrefixMap(String graphName, String prefix, String uri)
+ {
+ info("removeFromPrefixMap("+graphName+", "+prefix+", "+uri+")") ;
+ other.removeFromPrefixMap(graphName, prefix, uri) ;
+ }
+
+ @Override
+ public PrefixMapping getPrefixMapping()
+ {
+ PrefixMapping x = other.getPrefixMapping() ;
+ info("getPrefixMapping() -> "+x) ;
+ return x ;
+ }
+
+ @Override
+ public PrefixMapping getPrefixMapping(String graphName)
+ {
+ PrefixMapping x = other.getPrefixMapping(graphName) ;
+ info("getPrefixMapping("+graphName+") -> "+x) ;
+ return x ;
+ }
+
+ private void info(String string)
+ {
+ if ( label != null )
+ string = label+": "+string ;
+ log.info(string) ;
+ }
+}
+
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
\ No newline at end of file
Propchange: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetPrefixStorageLogger.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/BlockMgrJournal.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/BlockMgrJournal.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/BlockMgrJournal.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/BlockMgrJournal.java Tue Jun 21 18:00:57 2011
@@ -179,6 +179,9 @@ public class BlockMgrJournal implements
public void write(Block block)
{
checkIfClosed() ;
+ if ( ! block.isModified() )
+ Log.warn(this, "Page for block "+fileRef+"/"+block.getId()+" not modified") ;
+
if ( ! writeBlocks.containsKey(block.getId()) )
{
Log.warn(this, "Block not recognized: "+block.getId()) ;
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=1138110&r1=1138109&r2=1138110&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 Jun 21 18:00:57 2011
@@ -18,6 +18,7 @@ import setup.RangeIndexBuilder ;
import setup.TupleIndexBuilder ;
import tx.base.FileRef ;
+import com.hp.hpl.jena.sparql.core.DatasetPrefixStorage ;
import com.hp.hpl.jena.tdb.base.block.BlockMgr ;
import com.hp.hpl.jena.tdb.base.block.BlockMgrLogger ;
import com.hp.hpl.jena.tdb.base.file.BufferChannel ;
@@ -31,6 +32,8 @@ import com.hp.hpl.jena.tdb.base.objectfi
import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
import com.hp.hpl.jena.tdb.nodetable.NodeTableLogger ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+import com.hp.hpl.jena.tdb.store.DatasetPrefixStorageLogger ;
+import com.hp.hpl.jena.tdb.sys.ConcurrencyPolicy ;
public class DatasetBuilderTxn extends DatasetBuilderStd
{
@@ -84,6 +87,14 @@ public class DatasetBuilderTxn extends D
TupleIndexBuilder tupleIndexBuilder = new TupleIndexBuilderStd(rangeIndexBuilder) ;
set(nodeTableBuilder, tupleIndexBuilder, indexBuilder, rangeIndexBuilder, blockMgrBuilder, objectFileBuilder) ;
}
+
+ @Override
+ protected DatasetPrefixStorage makePrefixTable(Location location, ConcurrencyPolicy policy)
+ {
+ DatasetPrefixStorage x = super.makePrefixTable(location, policy) ;
+ x = new DatasetPrefixStorageLogger(x) ;
+ return x ;
+ }
@Override
public DatasetGraphTDB build(Location location, Properties config)
Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/ObjectFileTrans.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/ObjectFileTrans.java?rev=1138110&r1=1138109&r2=1138110&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/ObjectFileTrans.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/ObjectFileTrans.java Tue Jun 21 18:00:57 2011
@@ -12,6 +12,7 @@ import java.util.Iterator ;
import org.openjena.atlas.iterator.Iter ;
import org.openjena.atlas.lib.Pair ;
import org.openjena.atlas.lib.StrUtils ;
+import org.openjena.atlas.logging.Log ;
import com.hp.hpl.jena.tdb.base.block.Block ;
import com.hp.hpl.jena.tdb.base.file.FileException ;
@@ -20,8 +21,7 @@ import com.hp.hpl.jena.tdb.base.objectfi
public class ObjectFileTrans implements ObjectFile, Transactional
{
private final ObjectFile other ;
- private long startAlloc ;
- private long alloc ;
+ private long otherAllocOffset ; // record where we start allocating
private boolean passthrough = false ;
private boolean inTransaction = false ;
private final ObjectFile base ;
@@ -36,9 +36,9 @@ public class ObjectFileTrans implements
inTransaction = false ;
// [TxTDB:PATCH-UP] Begin is not being called.
- this.alloc = base.length() ;
- this.startAlloc = base.length() ;
+ this.otherAllocOffset = base.length() ;
+ Log.info(this, getLabel()+": otherAllocOffset = "+otherAllocOffset) ;
}
// Begin read ==> passthrough.
@@ -49,8 +49,7 @@ public class ObjectFileTrans implements
passthrough = false ;
inTransaction = true ;
other.reposition(0) ;
- this.alloc = base.length() ;
- this.startAlloc = base.length() ;
+ this.otherAllocOffset = base.length() ;
}
@Override
@@ -80,7 +79,7 @@ public class ObjectFileTrans implements
// Later - stay simple for now.
// Truncate/position the ObjectFile.
- base.reposition(startAlloc) ;
+ base.reposition(otherAllocOffset) ;
Iterator<Pair<Long, ByteBuffer>> iter = other.all() ;
for ( ; iter.hasNext() ; )
@@ -90,8 +89,8 @@ public class ObjectFileTrans implements
long x = base.write(p.getRight()) ;
- if ( p.getLeft()+startAlloc != x )
- throw new FileException("Expected id of "+(p.getLeft()+startAlloc)+", got an id of "+x) ;
+ if ( p.getLeft()+otherAllocOffset != x )
+ throw new FileException("Expected id of "+(p.getLeft()+otherAllocOffset)+", got an id of "+x) ;
}
}
@@ -101,16 +100,16 @@ public class ObjectFileTrans implements
public void reposition(long id)
{
if ( passthrough ) { base.reposition(id) ; return ; }
- if ( id > startAlloc )
+ if ( id > otherAllocOffset )
{
- other.reposition(id-startAlloc) ;
+ other.reposition(mapToOther(id)) ;
return ;
}
- other.reposition(0) ;
+ Log.warn(this, "Attempt to reposition over base file") ;
base.reposition(id) ;
- startAlloc = id ;
- alloc = id ;
+ other.reposition(0) ;
+ otherAllocOffset = base.length() ;
}
@Override
@@ -118,7 +117,7 @@ public class ObjectFileTrans implements
{
if ( passthrough ) return base.allocWrite(maxBytes) ;
Block block = other.allocWrite(maxBytes) ;
- block = new Block(block.getId()+startAlloc, block.getByteBuffer()) ;
+ block = new Block(block.getId()+otherAllocOffset, block.getByteBuffer()) ;
return block ;
}
@@ -126,37 +125,45 @@ public class ObjectFileTrans implements
public void completeWrite(Block block)
{
if ( passthrough ) { base.completeWrite(block) ; return ; }
- block = new Block(block.getId()-startAlloc, block.getByteBuffer()) ;
+ block = new Block(block.getId()-otherAllocOffset, block.getByteBuffer()) ;
other.completeWrite(block) ;
}
+ /** Convert from a id to the id in the "other" file */
+ private long mapToOther(long x) { return x-otherAllocOffset ; }
+ /** Convert from a id in other to an external id */
+ private long mapFromOther(long x) { return x+otherAllocOffset ; }
+
@Override
public long write(ByteBuffer buffer)
{
if ( passthrough ) { return base.write(buffer) ; }
// Write to auxillary
- System.out.println("Write") ;
+ System.out.println("***** Write") ;
long x = other.write(buffer) ;
- System.out.println("Write -> "+x+" ("+alloc+")") ;
- return alloc+x ;
+ System.out.println("***** Write -> "+x+" ("+otherAllocOffset+")") ;
+ return mapFromOther(x) ;
}
@Override
public ByteBuffer read(long id)
{
if ( passthrough ) { return base.read(id) ; }
- // case of id=0 , startAlloc=0???
- //
- if ( id < startAlloc )
+ // case of id=0 , startAlloc=0??? base file = alloc 0.
+ if ( otherAllocOffset == 0 )
+ ;
+
+ if ( id < otherAllocOffset )
return base.read(id) ;
- return other.read(id-startAlloc) ;
+ long x = mapToOther(id) ;
+ return other.read(id-otherAllocOffset) ;
}
@Override
public long length()
{
if ( passthrough ) { return base.length() ; }
- return startAlloc+other.length() ;
+ return otherAllocOffset+other.length() ;
}
@Override
@@ -177,6 +184,12 @@ public class ObjectFileTrans implements
{
if ( passthrough ) { base.close() ; return ; }
}
+
+ @Override
+ public String getLabel()
+ {
+ return "("+base.getLabel()+":"+other.getLabel()+")" ;
+ }
}
/*
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=1138110&r1=1138109&r2=1138110&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 Tue Jun 21 18:00:57 2011
@@ -46,6 +46,9 @@ public class TransactionManager
DatasetGraphTDB dsgtdb = (DatasetGraphTDB)dsg ;
// For now, always build a parallel dataset - later, associate with the DatasetGraphTDB
+ // THIS IS NECESSARY BECAUSE THE DATASET MAY HAVE BEEN UPDATED AND CHANGES STILL IN CACHES.
+ dsgtdb.sync() ;
+
Location location = dsgtdb.getLocation() ;
// TODO Don't rebuild every time.