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.