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() ; }