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/07/10 21:15:06 UTC

svn commit: r1144938 - in /incubator/jena/Experimental/TxTDB/trunk: src-dev/tx/api/ src/main/java/com/hp/hpl/jena/tdb/sys/

Author: andy
Date: Sun Jul 10 19:15:05 2011
New Revision: 1144938

URL: http://svn.apache.org/viewvc?rev=1144938&view=rev
Log: (empty)

Modified:
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/api/StoreConnection.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/CachingTDBMaker.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphMakerTDB.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetup.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetupMem.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java

Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/api/StoreConnection.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/api/StoreConnection.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/api/StoreConnection.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/api/StoreConnection.java Sun Jul 10 19:15:05 2011
@@ -18,38 +18,53 @@
 
 package tx.api;
 
+import java.util.HashMap ;
+import java.util.Map ;
+
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.setup.DatasetBuilderStd ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
+import com.hp.hpl.jena.tdb.sys.TDBMaker ;
 import com.hp.hpl.jena.tdb.transaction.DatasetGraphTxnTDB ;
+import com.hp.hpl.jena.tdb.transaction.TDBTransactionException ;
 import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
 
 public class StoreConnection
 {
     private DatasetGraphTDB baseDSG ;
+    private int readers = 0 ; 
+    private int writers = 0 ;       // 0 or 1 
+    private int committed = 0 ;     // Committed but not replyed yet.
 
     private StoreConnection(Location location)
     {
         baseDSG = DatasetBuilderStd.build(location.getDirectoryPath()) ;
     }
     
+    synchronized
     public DatasetGraphTxnTDB begin(ReadWrite mode)
     {
         switch (mode)
         {
             case READ :
+                readers++ ;
                 // Make a new read dataset.
                 //new DatasetGraphTxnRead(baseDSG) ;
                 break ;
             case WRITE :
+                if ( writers > 0 )
+                    throw new TDBTransactionException("Existing active transaction") ;
                 // Check only active transaction.
                 // Make from the last commited transation or base.
                 DatasetGraphTxnTDB dsg2 = new TransactionManager().begin(baseDSG) ;
+                return dsg2 ;
         }
         System.err.println("StoreConnection.begin: Not implemented fully") ;
         return null ;
     }
     
+    // Be told when a transaction finishes.
+    
     
     // ---- statics
     
@@ -58,12 +73,18 @@ public class StoreConnection
         return make(new Location(location)) ; 
     }
 
+    private static Map<Location, StoreConnection> cache = new HashMap<Location, StoreConnection>() ;
     
     public static StoreConnection make(Location location)
     {
-        //TDBFactory.expel(location) ;
-        // Cache?
-        return new StoreConnection(location) ; 
+        TDBMaker.releaseLocation(location) ;
+        StoreConnection sConn = cache.get(location) ;
+        if ( sConn == null )
+        {
+            sConn = new StoreConnection(location) ;
+            cache.put(location, sConn) ;
+        }
+        return sConn ; 
     }
     
     

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/CachingTDBMaker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/CachingTDBMaker.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/CachingTDBMaker.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/CachingTDBMaker.java Sun Jul 10 19:15:05 2011
@@ -65,9 +65,8 @@ public final class CachingTDBMaker imple
         }
     }
     @Override
-    public void releaseDatasetGraph(DatasetGraphTDB dataset)
+    public void releaseLocation(Location location)
     {
-        Location location = dataset.getLocation() ; 
         if ( location == null /*|| location.isMem()*/ )
             return ;
         
@@ -79,6 +78,13 @@ public final class CachingTDBMaker imple
                 log.warn("Not a cached location: "+absPath) ;
         log.debug("Remove from dataset cache: "+absPath) ;
         cache.remove(absPath) ;
+    }
+
+    @Override
+    public void releaseDatasetGraph(DatasetGraphTDB dataset)
+    {
+        Location location = dataset.getLocation() ; 
+        releaseLocation(location) ;
     } 
 }
 

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphMakerTDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphMakerTDB.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphMakerTDB.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphMakerTDB.java Sun Jul 10 19:15:05 2011
@@ -13,4 +13,8 @@ public interface DatasetGraphMakerTDB 
     
     /** Release a TDB-backed dataset which is already closed */
     public void releaseDatasetGraph(DatasetGraphTDB dataset) ;
+    
+    /** Release a TDB-backed dataset which is already closed */
+    public void releaseLocation(Location location) ;
+
 }
\ No newline at end of file

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetup.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetup.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetup.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetup.java Sun Jul 10 19:15:05 2011
@@ -26,6 +26,10 @@ public class DatasetGraphSetup implement
     @Override
     public void releaseDatasetGraph(DatasetGraphTDB dataset)
     {}
+
+    @Override
+    public void releaseLocation(Location location)
+    {}
 }
 
 /*

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetupMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetupMem.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetupMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/DatasetGraphSetupMem.java Sun Jul 10 19:15:05 2011
@@ -27,6 +27,10 @@ public class DatasetGraphSetupMem implem
     @Override
     public void releaseDatasetGraph(DatasetGraphTDB dataset)
     {}
+
+    @Override
+    public void releaseLocation(Location location)
+    {}
 }
 
 /*

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java?rev=1144938&r1=1144937&r2=1144938&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java Sun Jul 10 19:15:05 2011
@@ -62,6 +62,10 @@ public class TDBMaker
     public static void releaseDataset(DatasetGraphTDB dataset)
     { factory.releaseDatasetGraph(dataset) ; }
     
+    /** Release a location from any caching */
+    public static void releaseLocation(Location location)
+    { factory.releaseLocation(location) ; }
+    
     public static Graph _createGraph()
     { return factory.createDatasetGraph().getDefaultGraph() ; }