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 2012/06/09 17:27:13 UTC
svn commit: r1348427 - in
/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb:
StoreConnection.java sys/TDBMakerTxn.java
transaction/DatasetGraphTransaction.java transaction/TransactionManager.java
Author: andy
Date: Sat Jun 9 15:27:12 2012
New Revision: 1348427
URL: http://svn.apache.org/viewvc?rev=1348427&view=rev
Log:
Remove operations that create a dataset from a dataset - they risk StoreConnection cache confusion.
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java?rev=1348427&r1=1348426&r2=1348427&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java Sat Jun 9 15:27:12 2012
@@ -43,12 +43,13 @@ public class StoreConnection
private final DatasetGraphTDB baseDSG ;
private boolean isValid = true ;
- // private StoreConnection(Location location)
- // {
- // baseDSG = DatasetBuilderStd.build(location) ;
- // transactionManager = new TransactionManager(baseDSG) ;
- // }
- //
+ // Uncached - very dangerous.
+// private StoreConnection(Location location)
+// {
+// baseDSG = DatasetBuilderStd.build(location) ;
+// transactionManager = new TransactionManager(baseDSG) ;
+// }
+
private StoreConnection(DatasetGraphTDB dsg)
{
baseDSG = dsg ;
@@ -146,9 +147,8 @@ public class StoreConnection
{
StoreConnection sConn = cache.get(location) ;
if (sConn == null) return ;
- if (!force && sConn.transactionManager.activeTransactions()) throw new TDBTransactionException(
- "Can't expel: Active transactions for location: "
- + location) ;
+ if (!force && sConn.transactionManager.activeTransactions())
+ throw new TDBTransactionException("Can't expel: Active transactions for location: " + location) ;
// No transactions at this point (or we don't care and are clearing up
// forcefully.)
@@ -172,24 +172,24 @@ public class StoreConnection
return sConn ;
}
- /**
- * Return a StoreConnection for a particular connection. This is used to
- * create transactions for the database at the location.
- */
- public static synchronized StoreConnection make(DatasetGraphTDB dsg)
- {
- if (dsg instanceof DatasetGraphTxn)
- {
- // ((DatasetGraphTxn)dsg).getTransaction().getBaseDataset() ;
- throw new TDBTransactionException(
- "Can't make a StoreConnection from a transaction instance - need the base storage DatasetGraphTDB") ;
- }
- Location location = dsg.getLocation() ;
-
- StoreConnection sConn = cache.get(location) ;
- if (sConn == null) sConn = _makeAndCache(dsg) ;
- return sConn ;
- }
+// /**
+// * Return a StoreConnection for a particular connection. This is used to
+// * create transactions for the database at the location.
+// */
+// public static synchronized StoreConnection make(DatasetGraphTDB dsg)
+// {
+// if (dsg instanceof DatasetGraphTxn)
+// {
+// // ((DatasetGraphTxn)dsg).getTransaction().getBaseDataset() ;
+// throw new TDBTransactionException(
+// "Can't make a StoreConnection from a transaction instance - need the base storage DatasetGraphTDB") ;
+// }
+// Location location = dsg.getLocation() ;
+//
+// StoreConnection sConn = cache.get(location) ;
+// if (sConn == null) sConn = _makeAndCache(dsg) ;
+// return sConn ;
+// }
/**
* Return the StoreConnection if one already exists for this location, else
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java?rev=1348427&r1=1348426&r2=1348427&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java Sat Jun 9 15:27:12 2012
@@ -20,7 +20,6 @@ package com.hp.hpl.jena.tdb.sys;
import com.hp.hpl.jena.tdb.StoreConnection ;
import com.hp.hpl.jena.tdb.base.file.Location ;
-import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
/** factory for creating objects datasets backed by TDB storage which support transactions */
@@ -50,12 +49,6 @@ public class TDBMakerTxn
return new DatasetGraphTransaction(location) ;
}
- private static DatasetGraphTransaction _create(DatasetGraphTDB dsg)
- {
- // No need to cache StoreConnection does all that.
- return new DatasetGraphTransaction(dsg) ;
- }
-
public static void releaseLocation(Location location)
{
StoreConnection.release(location) ;
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java?rev=1348427&r1=1348426&r2=1348427&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java Sat Jun 9 15:27:12 2012
@@ -56,11 +56,12 @@ public class DatasetGraphTransaction ext
@Override
protected void finalize() throws Throwable
{
+// if ( txn.get() != null )
+// txn.get().abort() ;
txn.remove() ;
}
// Transaction per thread.
- private Object lock = new Object() ;
private ThreadLocalTxn txn = new ThreadLocalTxn() ;
private ThreadLocalBoolean inTransaction = new ThreadLocalBoolean() ;
@@ -72,11 +73,6 @@ public class DatasetGraphTransaction ext
sConn = StoreConnection.make(location) ;
}
- public DatasetGraphTransaction(DatasetGraphTDB dsg)
- {
- sConn = StoreConnection.make(dsg) ;
- }
-
public Location getLocation() { return sConn.getLocation() ; }
public DatasetGraphTDB getDatasetGraphToQuery()
@@ -137,7 +133,7 @@ public class DatasetGraphTransaction ext
@Override
protected void _begin(ReadWrite readWrite)
{
- synchronized(lock)
+ synchronized(sConn)
{
syncIfNotTransactional() ;
haveUsedInTransaction = true ;
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java?rev=1348427&r1=1348426&r2=1348427&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java Sat Jun 9 15:27:12 2012
@@ -323,18 +323,13 @@ public class TransactionManager
public static final boolean DEBUG = false ;
+ // If DatasetGraphTransaction has a sync lock on sConn, this
+ // does not need to be sync'ed. But it's possible to use some
+ // of the low level object directly so we'll play safe.
+
synchronized
private DatasetGraphTxn begin$(ReadWrite mode, String label)
{
-// // Subs transactions are a new view - commit is only commit to parent transaction.
-// if ( dsg instanceof DatasetGraphTxn )
-// {
-// throw new TDBException("Already in transactional DatasetGraph") ;
-// // Either:
-// // error -> implies nested
-// // create new transaction
-// }
-
if ( mode == ReadWrite.WRITE && activeWriters.get() > 0 ) // Guard
throw new TDBTransactionException("Existing active write transaction") ;