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 2017/09/28 11:08:26 UTC
[10/50] [abbrv] jena git commit: Expel datasets based on
container/storage location.
Expel datasets based on container/storage location.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d8fd29aa
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d8fd29aa
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d8fd29aa
Branch: refs/heads/jena-tdb2
Commit: d8fd29aa36e5d4e5da71c7f06f149ea2aa349e7b
Parents: 10f2bb1
Author: Andy Seaborne <an...@seaborne.org>
Authored: Sun Sep 3 17:14:56 2017 +0100
Committer: Andy Seaborne <an...@seaborne.org>
Committed: Sun Sep 3 17:14:56 2017 +0100
----------------------------------------------------------------------
.../java/org/seaborne/tdb2/DatabaseMgr.java | 4 +-
.../tdb2/store/DatasetGraphSwitchable.java | 12 +-
.../seaborne/tdb2/sys/DatabaseConnection.java | 12 +-
.../java/org/seaborne/tdb2/sys/DatabaseOps.java | 4 +-
.../org/seaborne/tdb2/sys/StoreConnection.java | 10 +-
.../java/org/seaborne/tdb2/sys/SystemTDB.java | 33 +++---
.../java/org/seaborne/tdb2/sys/TDBInternal.java | 20 +++-
.../tdb2/graph/TestDatasetGraphAccessorTDB.java | 15 ++-
.../tdb2/graph/TestDatasetGraphTDB.java | 18 ++-
.../tdb2/graph/TestGraphOverDatasetTDB.java | 20 +++-
.../org/seaborne/tdb2/graph/TestGraphsTDB1.java | 15 ++-
.../test/java/org/seaborne/tdb2/junit/TL.java | 39 ++++---
.../tdb2/setup/TestStoreParamsCreate.java | 26 +++--
.../org/seaborne/tdb2/solver/TestSolverTDB.java | 4 +-
.../org/seaborne/tdb2/solver/TestStats.java | 69 +++++------
.../org/seaborne/tdb2/store/TestDatasetTDB.java | 6 +-
.../tdb2/store/TestDatasetTDBPersist.java | 114 +++++++++----------
.../tdb2/store/TestDynamicDatasetTDB.java | 7 +-
.../seaborne/tdb2/store/TestGraphNamedTDB.java | 8 +-
.../org/seaborne/tdb2/store/TestGraphTDB.java | 6 +-
.../seaborne/tdb2/store/TestTransactions.java | 2 +-
.../org/seaborne/tdb2/sys/TestDatabaseOps.java | 2 -
22 files changed, 273 insertions(+), 173 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/DatabaseMgr.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/DatabaseMgr.java b/tdb2/src/main/java/org/seaborne/tdb2/DatabaseMgr.java
index b4dfd23..098a646 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/DatabaseMgr.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/DatabaseMgr.java
@@ -90,9 +90,9 @@ public class DatabaseMgr {
return TDBInternal.isBackedByTDB(datasetGraph);
}
- /** Return the location of a DatasetGraph if it is backed by TDB, else null */
+ /** Return the location of a DatasetGraph if it is backed by TDB, else null. */
public static Location location(DatasetGraph datasetGraph) {
- DatasetGraphTDB dsg = requireDirect(datasetGraph);
+ DatasetGraphSwitchable dsg = requireSwitchable(datasetGraph);
if ( dsg == null )
return null ;
return dsg.getLocation();
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/store/DatasetGraphSwitchable.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/store/DatasetGraphSwitchable.java b/tdb2/src/main/java/org/seaborne/tdb2/store/DatasetGraphSwitchable.java
index 115b304..9469a1d 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/store/DatasetGraphSwitchable.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/store/DatasetGraphSwitchable.java
@@ -27,7 +27,9 @@ import org.apache.jena.graph.Graph;
import org.apache.jena.graph.Node;
import org.apache.jena.shared.PrefixMapping;
import org.apache.jena.shared.impl.PrefixMappingImpl;
-import org.apache.jena.sparql.core.*;
+import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.DatasetPrefixStorage ;
+import org.seaborne.dboe.base.file.Location ;
final
public class DatasetGraphSwitchable extends DatasetGraphWrapperTxn /* Until ARQ catches up with promote */
@@ -43,12 +45,14 @@ public class DatasetGraphSwitchable extends DatasetGraphWrapperTxn /* Until ARQ
private final AtomicReference<DatasetGraph> dsgx = new AtomicReference<>();
// Null for in-memory datasets.
private final Path basePath;
+ private final Location location ;
- public DatasetGraphSwitchable(Path base, DatasetGraph dsg) {
+ public DatasetGraphSwitchable(Path base, Location location, DatasetGraph dsg) {
// Don't use the slot in datasetGraphWrapper - use the AtomicReference
super(null) ;
dsgx.set(dsg);
- this.basePath = base;
+ this.basePath = base;
+ this.location = location;
}
/** Is this {@code DatasetGraphSwitchable} just a holder for a {@code DatasetGraph}?
@@ -58,6 +62,8 @@ public class DatasetGraphSwitchable extends DatasetGraphWrapperTxn /* Until ARQ
public Path getContainerPath() { return basePath; }
+ public Location getLocation() { return location; }
+
/** The dataset to use for redirection - can be overridden.
* It is also guaranteed that this is called only once per
* delegated call. Changes to the wrapped object can be
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseConnection.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseConnection.java b/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseConnection.java
index 0e22f8f..e9e6c27 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseConnection.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseConnection.java
@@ -114,16 +114,13 @@ public class DatabaseConnection {
* Does not expel from {@link StoreConnection}.
*/
public static synchronized void internalExpel(Location location, boolean force) {
+ // ** Check it is a container location
DatabaseConnection dbConn = cache.get(location) ;
- if (dbConn == null) return ;
- cache.remove(location) ;
+ if ( dbConn == null )
+ return ;
dbConn.isValid = false;
//dbConn.datasetGraph = null;
//dbConn.datasetGraphSwitchable = null;
-
- // if (!force && sConn.transactionManager.activeTransactions())
- // throw new TDBTransactionException("Can't expel: Active transactions for location: " + location) ;
-
cache.remove(location) ;
// Release the lock after the cache is emptied.
if (SystemTDB.DiskLocationMultiJvmUsagePrevention && ! location.isMem() ) {
@@ -144,10 +141,11 @@ public class DatabaseConnection {
Set<Location> x = new HashSet<>(cache.keySet()) ;
for (Location loc : x)
internalExpel(loc, true) ;
+ if ( ! cache.isEmpty() )
+ System.err.println("DatabaseConnection: Cache not empty!");
cache.clear() ;
}
-
// One of the other.
private final DatasetGraphSwitchable datasetGraphSwitchable;
private final DatasetGraph datasetGraph;
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseOps.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseOps.java b/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseOps.java
index b985798..bb34ed3 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseOps.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/sys/DatabaseOps.java
@@ -81,7 +81,7 @@ public class DatabaseOps {
private static DatasetGraphSwitchable createSwitchable(Location location) {
if ( location.isMem() ) {
DatasetGraph dsg = StoreConnection.connectCreate(location).getDatasetGraph();
- return new DatasetGraphSwitchable(null, dsg);
+ return new DatasetGraphSwitchable(null, location, dsg);
}
// Exists?
if ( ! location.exists() )
@@ -97,7 +97,7 @@ public class DatabaseOps {
}
Location loc2 = IOX.asLocation(db);
DatasetGraphTDB dsg = StoreConnection.connectCreate(loc2).getDatasetGraphTDB();
- DatasetGraphSwitchable appDSG = new DatasetGraphSwitchable(path, dsg);
+ DatasetGraphSwitchable appDSG = new DatasetGraphSwitchable(path, location, dsg);
return appDSG;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/sys/StoreConnection.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/sys/StoreConnection.java b/tdb2/src/main/java/org/seaborne/tdb2/sys/StoreConnection.java
index 54d863b..21d5377 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/sys/StoreConnection.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/sys/StoreConnection.java
@@ -32,6 +32,8 @@ import org.seaborne.dboe.base.file.ChannelManager ;
import org.seaborne.dboe.base.file.Location ;
import org.seaborne.dboe.base.file.ProcessFileLock;
import org.seaborne.dboe.sys.Names;
+import org.seaborne.dboe.transaction.txn.TransactionCoordinator ;
+import org.seaborne.dboe.transaction.txn.TransactionException ;
import org.seaborne.tdb2.setup.StoreParams ;
import org.seaborne.tdb2.setup.TDBBuilder ;
import org.seaborne.tdb2.store.DatasetGraphTDB ;
@@ -124,14 +126,16 @@ 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) ;
+ TransactionCoordinator txnCoord = sConn.getDatasetGraphTDB().getTxnSystem().getTxnMgr();
+ if (!force && txnCoord.countActive() > 0 )
+ throw new TransactionException("Can't expel: Active transactions for location: " + location) ;
// No transactions at this point
// (or we don't care and are clearing up forcefully.)
- sConn.getDatasetGraphTDB().getTxnSystem().getTxnMgr().shutdown();
sConn.getDatasetGraphTDB().shutdown() ;
+ // Done by DatasetGraphTDB()
+ //txnCoord.shutdown();
sConn.isValid = false ;
cache.remove(location) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/sys/SystemTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/sys/SystemTDB.java b/tdb2/src/main/java/org/seaborne/tdb2/sys/SystemTDB.java
index 6531310..51ef995 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/sys/SystemTDB.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/sys/SystemTDB.java
@@ -25,9 +25,6 @@ import org.apache.jena.atlas.io.IO ;
import org.apache.jena.atlas.lib.PropertyUtils ;
import org.apache.jena.atlas.logging.Log ;
import org.apache.jena.query.ARQ ;
-import org.apache.jena.query.Dataset ;
-import org.apache.jena.query.ReadWrite ;
-import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.engine.optimizer.reorder.ReorderLib ;
import org.apache.jena.sparql.engine.optimizer.reorder.ReorderTransformation ;
import org.apache.jena.sparql.util.Symbol ;
@@ -38,7 +35,6 @@ import org.seaborne.dboe.base.record.RecordFactory ;
import org.seaborne.dboe.sys.Sys;
import org.seaborne.tdb2.TDB2 ;
import org.seaborne.tdb2.TDBException ;
-import org.seaborne.tdb2.store.DatasetGraphTxn ;
import org.seaborne.tdb2.store.NodeId ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
@@ -402,20 +398,19 @@ public class SystemTDB
throw new TDBException("Unrecognized file mode (not one of 'default', 'direct' or 'mapped': "+x) ;
}
- public static Dataset setNonTransactional(Dataset dataset) {
- if ( dataset.isInTransaction() )
- return dataset ; // And hope it's a write transaction.
- dataset.begin(ReadWrite.WRITE);
- //Or wrap DatasetGraphTDB?
- return dataset ;
- }
-
- public static DatasetGraph setNonTransactional(DatasetGraph dataset) {
- DatasetGraphTxn dsgx = (DatasetGraphTxn)dataset ;
- if ( dsgx.isInTransaction() )
- return dataset ;
- dsgx.begin(ReadWrite.WRITE);
- return dataset ;
- }
+// public static Dataset setNonTransactional(Dataset dataset) {
+// if ( dataset.isInTransaction() )
+// return dataset ; // And hope it's a write transaction.
+// dataset.begin(ReadWrite.WRITE);
+// //Or wrap DatasetGraphTDB?
+// return dataset ;
+// }
+//
+// public static DatasetGraph setNonTransactional(DatasetGraph dataset) {
+// if ( dataset.isInTransaction() )
+// return dataset ;
+// dataset.begin(ReadWrite.WRITE);
+// return dataset ;
+// }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/main/java/org/seaborne/tdb2/sys/TDBInternal.java
----------------------------------------------------------------------
diff --git a/tdb2/src/main/java/org/seaborne/tdb2/sys/TDBInternal.java b/tdb2/src/main/java/org/seaborne/tdb2/sys/TDBInternal.java
index 25c1688..3bd7427 100644
--- a/tdb2/src/main/java/org/seaborne/tdb2/sys/TDBInternal.java
+++ b/tdb2/src/main/java/org/seaborne/tdb2/sys/TDBInternal.java
@@ -129,12 +129,22 @@ public class TDBInternal {
return null;
}
- /** Stop managing a location. Use with great care (testing only). */
- public static synchronized void expel(Location location, boolean force) {
- DatabaseConnection.internalExpel(location, force);
- StoreConnection.internalExpel(location, force);
+ /** Stop managing a DatasetGraph. Use with great care (testing only). */
+ public static synchronized void expel(DatasetGraph dsg) {
+ Location locContainer = null;
+ Location locStorage = null;
+
+ if ( dsg instanceof DatasetGraphSwitchable ) {
+ locContainer = ((DatasetGraphSwitchable)dsg).getLocation();
+ dsg = ((DatasetGraphSwitchable)dsg).getWrapped();
+ }
+ if ( dsg instanceof DatasetGraphTDB )
+ locStorage = ((DatasetGraphTDB)dsg).getLocation();
+
+ DatabaseConnection.internalExpel(locContainer, false);
+ StoreConnection.internalExpel(locStorage, false);
}
-
+
/**
* Reset the whole TDB system.
* Use with great care.
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphAccessorTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphAccessorTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphAccessorTDB.java
index 327ca47..8184154 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphAccessorTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphAccessorTDB.java
@@ -18,17 +18,30 @@
package org.seaborne.tdb2.graph;
import org.apache.jena.query.DatasetAccessorFactory ;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.web.AbstractTestDatasetGraphAccessor ;
import org.apache.jena.web.DatasetGraphAccessor ;
+import org.junit.After ;
+import org.junit.Before ;
import org.seaborne.tdb2.junit.TL ;
public class TestDatasetGraphAccessorTDB extends AbstractTestDatasetGraphAccessor
{
+ DatasetGraph dsg = TL.createTestDatasetGraphMem() ;
+ @Before public void before() {
+ dsg.begin(ReadWrite.WRITE);
+ }
+
+ @After public void after() {
+ dsg.abort();
+ dsg.end();
+ TL.expel(dsg);
+ }
+
@Override
protected DatasetGraphAccessor getDatasetUpdater()
{
- DatasetGraph dsg = TL.createTestDatasetGraphMem() ;
return DatasetAccessorFactory.make(dsg) ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphTDB.java
index 12092fb..0cd2bca 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestDatasetGraphTDB.java
@@ -17,16 +17,32 @@
package org.seaborne.tdb2.graph;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.core.AbstractDatasetGraphTests ;
import org.apache.jena.sparql.core.DatasetGraph ;
+import org.junit.After ;
+import org.junit.Before ;
import org.junit.Test ;
import org.seaborne.tdb2.junit.TL ;
// Quad tests
public class TestDatasetGraphTDB extends AbstractDatasetGraphTests
{
+ DatasetGraph dsg = TL.createTestDatasetGraphMem() ;
+ @Before public void before() {
+ dsg.begin(ReadWrite.WRITE);
+ }
+
+ @After public void after() {
+ dsg.abort();
+ dsg.end();
+ TL.expel(dsg);
+ }
+
@Override
- protected DatasetGraph emptyDataset() { return TL.createTestDatasetGraphMem() ; }
+ protected DatasetGraph emptyDataset() {
+ return dsg ;
+ }
@Override
// Empty graph tests: N/A
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphOverDatasetTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphOverDatasetTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphOverDatasetTDB.java
index 20a0577..de01a86 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphOverDatasetTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphOverDatasetTDB.java
@@ -19,15 +19,33 @@ package org.seaborne.tdb2.graph;
import org.apache.jena.graph.Graph ;
import org.apache.jena.graph.Node ;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.core.AbstractTestGraphOverDataset ;
import org.apache.jena.sparql.core.DatasetGraph ;
+import org.junit.After ;
import org.seaborne.tdb2.junit.TL ;
/** This is the view-graph test suite run over a TDB DatasetGraph to check compatibility */
public class TestGraphOverDatasetTDB extends AbstractTestGraphOverDataset
{
+ DatasetGraph dsg = null;
+ @After public void after2() {
+ if ( dsg == null )
+ return;
+ dsg.abort();
+ dsg.end();
+ TL.expel(dsg);
+ }
+
@Override
- protected DatasetGraph createBaseDSG() { return TL.createTestDatasetGraphMem() ; }
+ protected DatasetGraph createBaseDSG() {
+ // Called in initialization.
+ if ( dsg == null ) {
+ dsg = TL.createTestDatasetGraphMem() ;
+ dsg.begin(ReadWrite.WRITE);
+ }
+ return dsg ;
+ }
@Override
protected Graph makeNamedGraph(DatasetGraph dsg, Node gn)
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphsTDB1.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphsTDB1.java b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphsTDB1.java
index e6638a3..3f703e5 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphsTDB1.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/graph/TestGraphsTDB1.java
@@ -18,12 +18,25 @@
package org.seaborne.tdb2.graph;
import org.apache.jena.query.Dataset ;
+import org.apache.jena.query.ReadWrite ;
+import org.junit.After ;
+import org.junit.Before ;
import org.seaborne.tdb2.junit.TL ;
public class TestGraphsTDB1 extends AbstractTestGraphsTDB
{
+ Dataset ds = TL.createTestDatasetMem();
+ @Before public void before() {
+ ds.begin(ReadWrite.WRITE);
+ }
+
+ @After public void after() {
+ ds.abort();
+ ds.end();
+ TL.expel(ds);
+ }
@Override
protected Dataset createDataset() {
- return TL.createTestDatasetMem() ;
+ return ds ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/junit/TL.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/junit/TL.java b/tdb2/src/test/java/org/seaborne/tdb2/junit/TL.java
index 7385354..4ff4ae6 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/junit/TL.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/junit/TL.java
@@ -21,28 +21,37 @@ import java.util.function.Consumer ;
import org.apache.jena.query.Dataset ;
import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.system.Txn ;
import org.seaborne.dboe.base.file.Location ;
import org.seaborne.tdb2.ConfigTest ;
import org.seaborne.tdb2.DatabaseMgr ;
import org.seaborne.tdb2.TDB2Factory ;
-import org.seaborne.tdb2.sys.SystemTDB ;
import org.seaborne.tdb2.sys.TDBInternal ;
-/** Execute a test with a fresh dataset in a write transaction */
+/** Support for tests to be less "transaction-y" */
public class TL {
public static void exec(Consumer<Dataset> action) {
- Dataset dataset = createTestDataset() ;
- action.accept(dataset);
- releaseDataset(dataset) ;
- TDBInternal.reset() ;
+ Dataset dataset = createTestDataset();
+ try {
+ Txn.executeWrite(dataset, ()->action.accept(dataset));
+ //TDBInternal.reset();
+
+ } finally { expel(dataset); }
}
public static void execMem(Consumer<Dataset> action) {
Dataset dataset = createTestDatasetMem() ;
- action.accept(dataset);
- releaseDataset(dataset);
- TDBInternal.reset();
+ Txn.executeWrite(dataset, ()->action.accept(dataset));
+ expel(dataset);
+ }
+
+ public static void expel(Dataset dataset) {
+ expel(dataset.asDatasetGraph());
+ }
+
+ public static void expel(DatasetGraph dataset) {
+ TDBInternal.expel(dataset);
}
// Or use these for @Before, @After style.
@@ -56,30 +65,24 @@ public class TL {
return location ;
}
- public static void releaseDataset(Dataset dataset) {
+ private static void releaseDataset(Dataset dataset) {
dataset.abort() ;
- TDBInternal.reset() ;
+ expel(dataset);
}
- public static Dataset createTestDataset() {
+ private static Dataset createTestDataset() {
Location location = cleanLocation() ;
Dataset dataset = TDB2Factory.connectDataset(location) ;
- // Non-transactional tests
- dataset = SystemTDB.setNonTransactional(dataset) ;
return dataset ;
}
public static Dataset createTestDatasetMem() {
Dataset dataset = TDB2Factory.createDataset() ;
- // Non-transactional tests
- dataset = SystemTDB.setNonTransactional(dataset) ;
return dataset ;
}
public static DatasetGraph createTestDatasetGraphMem() {
DatasetGraph dataset = DatabaseMgr.createDatasetGraph() ;
- // Non-transactional tests
- dataset = SystemTDB.setNonTransactional(dataset) ;
return dataset ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/setup/TestStoreParamsCreate.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/setup/TestStoreParamsCreate.java b/tdb2/src/test/java/org/seaborne/tdb2/setup/TestStoreParamsCreate.java
index 44aacfb..071b135 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/setup/TestStoreParamsCreate.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/setup/TestStoreParamsCreate.java
@@ -17,13 +17,19 @@
package org.seaborne.tdb2.setup;
+import static org.junit.Assert.assertEquals ;
+import static org.junit.Assert.assertFalse ;
+import static org.junit.Assert.assertNotEquals ;
+import static org.junit.Assert.assertNotNull ;
+import static org.junit.Assert.assertNull ;
+import static org.junit.Assert.assertTrue ;
+
import java.nio.file.Files ;
import java.nio.file.Path ;
import java.nio.file.Paths ;
import org.apache.jena.atlas.json.JSON ;
import org.apache.jena.atlas.json.JsonObject ;
-import static org.junit.Assert.*;
import org.apache.jena.atlas.lib.FileOps ;
import org.junit.After ;
import org.junit.Before ;
@@ -31,7 +37,6 @@ import org.junit.Test ;
import org.seaborne.dboe.base.file.Location ;
import org.seaborne.dboe.sys.Names;
import org.seaborne.tdb2.ConfigTest ;
-import org.seaborne.tdb2.sys.DatabaseConnection ;
import org.seaborne.tdb2.sys.StoreConnection ;
import org.seaborne.tdb2.sys.TDBInternal ;
@@ -40,6 +45,7 @@ import org.seaborne.tdb2.sys.TDBInternal ;
* calls and can be noticably slow.
*/
public class TestStoreParamsCreate {
+ // Thse tests work on storage locations.
private final String DB_DIR = ConfigTest.getCleanDir() ;
private final Path db = Paths.get(DB_DIR) ;
private final Path cfg = Paths.get(DB_DIR, Names.TDB_CONFIG_FILE) ;
@@ -52,14 +58,18 @@ public class TestStoreParamsCreate {
.blockReadCacheSize(4)
.build();
+ private void expel() {
+ StoreConnection.internalExpel(loc, true);
+ }
+
@Before public void clearupTest() {
// Flush and clean.
- DatabaseConnection.internalExpel(loc, true);
- FileOps.clearAll(DB_DIR);
+ TDBInternal.reset();
+ FileOps.clearAll(loc.getDirectoryPath());
}
@After public void expelDatabase() {
- TDBInternal.expel(loc, true) ;
+ expel();
}
@Test public void params_create_01() {
@@ -83,7 +93,7 @@ public class TestStoreParamsCreate {
// Create.
StoreConnection.connectCreate(loc) ;
// Drop.
- TDBInternal.expel(loc, true) ;
+ expel();
// Reconnect
StoreConnection.connectCreate(loc, null) ;
StoreParams pLoc = StoreParamsCodec.read(loc) ;
@@ -100,7 +110,7 @@ public class TestStoreParamsCreate {
// Create.
StoreConnection.connectCreate(loc, null) ;
// Drop.
- TDBInternal.expel(loc, true) ;
+ expel();
// Reconnect
StoreConnection.connectCreate(loc, pSpecial) ;
//StoreParams pLoc = StoreParamsCodec.read(loc) ;
@@ -125,7 +135,7 @@ public class TestStoreParamsCreate {
// Create.
StoreConnection.connectCreate(loc, pApp) ;
// Drop.
- TDBInternal.expel(loc, true) ;
+ expel();
// Reconnect
StoreConnection.connectCreate(loc, pSpecial) ;
//StoreParams pLoc = StoreParamsCodec.read(loc) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/solver/TestSolverTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/solver/TestSolverTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/solver/TestSolverTDB.java
index d94252e..43ef56d 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/solver/TestSolverTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/solver/TestSolverTDB.java
@@ -54,6 +54,7 @@ public class TestSolverTDB
@BeforeClass static public void beforeClass()
{
dataset = TL.createTestDatasetMem() ;
+ dataset.begin(ReadWrite.WRITE);
graphData = ConfigTest.getTestingDataRoot()+"/Data/solver-data.ttl" ;
RDFDataMgr.read(dataset, graphData) ;
graph = dataset.asDatasetGraph().getDefaultGraph() ;
@@ -63,7 +64,8 @@ public class TestSolverTDB
@AfterClass static public void afterClass() {
- TL.releaseDataset(dataset);
+ dataset.abort();
+ TL.expel(dataset);
}
static private void addAll(Graph srcGraph, Graph dstGraph)
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/solver/TestStats.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/solver/TestStats.java b/tdb2/src/test/java/org/seaborne/tdb2/solver/TestStats.java
index 8bb3ae7..a9dfe92 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/solver/TestStats.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/solver/TestStats.java
@@ -17,14 +17,16 @@
package org.seaborne.tdb2.solver;
+import static org.junit.Assert.assertEquals ;
+
import java.util.Iterator ;
-import static org.junit.Assert.*;
import org.apache.jena.atlas.lib.tuple.Tuple ;
import org.apache.jena.graph.NodeFactory ;
import org.apache.jena.sparql.core.Quad ;
import org.apache.jena.sparql.sse.SSE ;
import org.junit.Test ;
+import org.seaborne.dboe.jenax.Txn ;
import org.seaborne.tdb2.junit.TL ;
import org.seaborne.tdb2.solver.stats.StatsCollectorNodeId ;
import org.seaborne.tdb2.solver.stats.StatsResults ;
@@ -46,42 +48,45 @@ public class TestStats
static Quad q3 = SSE.parseQuad("(<g2> <s> <p> 9)") ;
static Quad q4 = SSE.parseQuad("(_ <s> <p> 1)") ;
static {
- dsg.add(q1) ;
- dsg.add(q2) ;
- dsg.add(q3) ;
- dsg.add(q4) ;
+ Txn.executeWrite(dsg, ()->{
+ dsg.add(q1) ;
+ dsg.add(q2) ;
+ dsg.add(q3) ;
+ dsg.add(q4) ;
+ });
}
-
- private StatsResults statsForGraph(NodeId gid)
- {
- Iterator<Tuple<NodeId>> iter = quads.find(gid, null, null, null) ;
-
- StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
- for ( ; iter.hasNext(); )
- {
- Tuple<NodeId> t = iter.next() ;
- stats.record(t.get(0), t.get(1), t.get(2), t.get(3)) ;
- }
-
- return stats.results() ;
+ private StatsResults statsForGraph(NodeId gid) {
+ // StatsCollectorNodeId writes nodes for rdf:type (this is not good).
+ return Txn.calculateWrite(dsg, ()-> {
+ Iterator<Tuple<NodeId>> iter = quads.find(gid, null, null, null) ;
+
+ StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
+ for ( ; iter.hasNext() ; ) {
+ Tuple<NodeId> t = iter.next() ;
+ stats.record(t.get(0), t.get(1), t.get(2), t.get(3)) ;
+ }
+
+ return stats.results() ;
+ }) ;
}
-
- private StatsResults statsForDftGraph()
- {
- Iterator<Tuple<NodeId>> iter = triples.findAll() ;
-
- StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
- for ( ; iter.hasNext(); )
- {
- Tuple<NodeId> t = iter.next() ;
- stats.record(null, t.get(0), t.get(1), t.get(2)) ;
- }
-
- return stats.results() ;
+
+ private StatsResults statsForDftGraph() {
+ // StatsCollectorNodeId writes nodes for rdf:type (this is not good).
+ return Txn.calculateWrite(dsg, ()-> {
+ Iterator<Tuple<NodeId>> iter = triples.findAll() ;
+
+ StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
+ for ( ; iter.hasNext() ; ) {
+ Tuple<NodeId> t = iter.next() ;
+ stats.record(null, t.get(0), t.get(1), t.get(2)) ;
+ }
+
+ return stats.results() ;
+ }) ;
}
- @Test public void stats_01() {
+ @Test public void stats_01() {
StatsResults r = statsForDftGraph() ;
assertEquals(1, r.getCount()) ;
assertEquals(1, r.getPredicates().keySet().size()) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDB.java
index 48fd7fb..1ff5387 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDB.java
@@ -40,10 +40,14 @@ public class TestDatasetTDB
@Before public void before() {
dataset = TL.createTestDatasetMem() ;
+ dataset.begin(ReadWrite.WRITE);
}
@After public void after() {
- TL.releaseDataset(dataset);
+ dataset.abort();
+ dataset.end();
+ TL.expel(dataset);
+
}
private Dataset dataset() {
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDBPersist.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDBPersist.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDBPersist.java
index fe928a0..81a5dd5 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDBPersist.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDatasetTDBPersist.java
@@ -17,18 +17,12 @@
package org.seaborne.tdb2.store;
-import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.assertFalse ;
import static org.junit.Assert.assertTrue ;
-import java.util.Arrays ;
-import java.util.List ;
-
-import org.apache.jena.atlas.iterator.Iter ;
import org.apache.jena.graph.Graph ;
import org.apache.jena.graph.Node ;
import org.apache.jena.graph.Triple ;
-import org.apache.jena.sparql.sse.SSE ;
import org.apache.jena.sparql.util.NodeFactoryExtra ;
import org.junit.Test ;
import org.seaborne.tdb2.junit.TL ;
@@ -60,58 +54,58 @@ public class TestDatasetTDBPersist
}) ;
}
- @Test
- public void dataset3() {
- TL.exec((ds) -> {
- Graph g1 = ds.getDefaultModel().getGraph() ;
- // Sometimes, under windows, deleting the files by
- // clearDirectory does not work.
- // Needed for safe tests on windows.
- g1.clear() ;
-
- Graph g2 = ds.getNamedModel("http://example/").getGraph() ;
- g2.add(new Triple(n0, n1, n2)) ;
- assertTrue(g2.contains(n0, n1, n2)) ;
- assertFalse(g1.contains(n0, n1, n2)) ;
- }) ;
- }
-
- @Test
- public void dataset4() {
- String graphName = "http://example/" ;
- Triple triple = SSE.parseTriple("(<x> <y> <z>)") ;
- Node gn = org.apache.jena.graph.NodeFactory.createURI(graphName) ;
-
- TL.exec((ds) -> {
- // ?? See TupleLib.
- ds.asDatasetGraph().deleteAny(gn, null, null, null) ;
-
- Graph g2 = ds.asDatasetGraph().getGraph(gn) ;
-
- // Graphs only exists if they have a triple in them
- assertFalse(ds.containsNamedModel(graphName)) ;
-
- List<String> names = Iter.toList(ds.listNames()) ;
- assertEquals(0, names.size()) ;
- assertEquals(0, ds.asDatasetGraph().size()) ;
- }) ;
- }
-
- @Test
- public void dataset5() {
- String graphName = "http://example/" ;
- Triple triple = SSE.parseTriple("(<x> <y> <z>)") ;
- TL.exec((ds) -> {
- Graph g2 = ds.asDatasetGraph().getGraph(org.apache.jena.graph.NodeFactory.createURI(graphName)) ;
- // Graphs only exists if they have a triple in them
- g2.add(triple) ;
-
- assertTrue(ds.containsNamedModel(graphName)) ;
- List<String> x = Iter.toList(ds.listNames()) ;
- List<String> y = Arrays.asList(graphName) ;
- assertEquals(x, y) ;
-
- assertEquals(1, ds.asDatasetGraph().size()) ;
- }) ;
- }
+// @Test
+// public void dataset3() {
+// TL.exec((ds) -> {
+// Graph g1 = ds.getDefaultModel().getGraph() ;
+// // Sometimes, under windows, deleting the files by
+// // clearDirectory does not work.
+// // Needed for safe tests on windows.
+// g1.clear() ;
+//
+// Graph g2 = ds.getNamedModel("http://example/").getGraph() ;
+// g2.add(new Triple(n0, n1, n2)) ;
+// assertTrue(g2.contains(n0, n1, n2)) ;
+// assertFalse(g1.contains(n0, n1, n2)) ;
+// }) ;
+// }
+//
+// @Test
+// public void dataset4() {
+// String graphName = "http://example/" ;
+// Triple triple = SSE.parseTriple("(<x> <y> <z>)") ;
+// Node gn = org.apache.jena.graph.NodeFactory.createURI(graphName) ;
+//
+// TL.exec((ds) -> {
+// // ?? See TupleLib.
+// ds.asDatasetGraph().deleteAny(gn, null, null, null) ;
+//
+// Graph g2 = ds.asDatasetGraph().getGraph(gn) ;
+//
+// // Graphs only exists if they have a triple in them
+// assertFalse(ds.containsNamedModel(graphName)) ;
+//
+// List<String> names = Iter.toList(ds.listNames()) ;
+// assertEquals(0, names.size()) ;
+// assertEquals(0, ds.asDatasetGraph().size()) ;
+// }) ;
+// }
+//
+// @Test
+// public void dataset5() {
+// String graphName = "http://example/" ;
+// Triple triple = SSE.parseTriple("(<x> <y> <z>)") ;
+// TL.exec((ds) -> {
+// Graph g2 = ds.asDatasetGraph().getGraph(org.apache.jena.graph.NodeFactory.createURI(graphName)) ;
+// // Graphs only exists if they have a triple in them
+// g2.add(triple) ;
+//
+// assertTrue(ds.containsNamedModel(graphName)) ;
+// List<String> x = Iter.toList(ds.listNames()) ;
+// List<String> y = Arrays.asList(graphName) ;
+// assertEquals(x, y) ;
+//
+// assertEquals(1, ds.asDatasetGraph().size()) ;
+// }) ;
+// }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestDynamicDatasetTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDynamicDatasetTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDynamicDatasetTDB.java
index fbcfc48..d0376e9 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestDynamicDatasetTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestDynamicDatasetTDB.java
@@ -18,6 +18,7 @@
package org.seaborne.tdb2.store;
import org.apache.jena.query.Dataset ;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.core.AbstractTestDynamicDataset ;
import org.seaborne.tdb2.TDB2 ;
import org.seaborne.tdb2.junit.TL ;
@@ -27,11 +28,13 @@ public class TestDynamicDatasetTDB extends AbstractTestDynamicDataset
@Override
protected Dataset createDataset()
{
- return TL.createTestDatasetMem() ;
+ Dataset ds = TL.createTestDatasetMem() ;
+ ds.begin(ReadWrite.WRITE);
+ return ds;
}
@Override
- protected void releaseDataset(Dataset ds) { TL.releaseDataset(ds); }
+ protected void releaseDataset(Dataset ds) { ds.abort(); TL.expel(ds); }
protected void startDynamicAndUnionTest() { TDB2.getContext().setTrue(TDB2.symUnionDefaultGraph) ; }
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphNamedTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphNamedTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphNamedTDB.java
index 99c933e..d844c5a 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphNamedTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphNamedTDB.java
@@ -20,6 +20,7 @@ package org.seaborne.tdb2.store;
import org.apache.jena.graph.Graph ;
import org.apache.jena.graph.Node ;
import org.apache.jena.query.Dataset ;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.graph.AbstractTestGraph2 ;
import org.apache.jena.sparql.util.NodeFactoryExtra ;
import org.junit.After ;
@@ -36,14 +37,17 @@ public class TestGraphNamedTDB extends AbstractTestGraph2
@Before
public void before() {
dataset = TL.createTestDatasetMem() ;
+ dataset.begin(ReadWrite.WRITE);
graph = dataset.asDatasetGraph().getGraph(graphNode) ;
}
@After
public void after() {
- TL.releaseDataset(dataset) ;
+ dataset.abort();
+ dataset.end();
+ TL.expel(dataset) ;
}
-
+
@Override
protected Graph emptyGraph() {
graph.clear() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphTDB.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphTDB.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphTDB.java
index 0317cc5..7f941eb 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphTDB.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestGraphTDB.java
@@ -19,6 +19,7 @@ package org.seaborne.tdb2.store;
import org.apache.jena.graph.Graph ;
import org.apache.jena.query.Dataset ;
+import org.apache.jena.query.ReadWrite ;
import org.apache.jena.sparql.graph.AbstractTestGraph2 ;
import org.junit.After ;
import org.junit.Before ;
@@ -33,12 +34,15 @@ public class TestGraphTDB extends AbstractTestGraph2
@Before
public void before() {
dataset = TL.createTestDatasetMem() ;
+ dataset.begin(ReadWrite.WRITE);
graph = dataset.getDefaultModel().getGraph() ;
}
@After
public void after() {
- TL.releaseDataset(dataset) ;
+ dataset.abort();
+ dataset.end();
+ TL.expel(dataset) ;
}
@Override
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/store/TestTransactions.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/store/TestTransactions.java b/tdb2/src/test/java/org/seaborne/tdb2/store/TestTransactions.java
index 47bc3e5..1aed0a6 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/store/TestTransactions.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/store/TestTransactions.java
@@ -83,7 +83,7 @@ public class TestTransactions
@After public void after() {
dataset.close() ;
- TDBInternal.expel(location, true);
+ TDBInternal.expel(dataset.asDatasetGraph());
}
// Models across transactions
http://git-wip-us.apache.org/repos/asf/jena/blob/d8fd29aa/tdb2/src/test/java/org/seaborne/tdb2/sys/TestDatabaseOps.java
----------------------------------------------------------------------
diff --git a/tdb2/src/test/java/org/seaborne/tdb2/sys/TestDatabaseOps.java b/tdb2/src/test/java/org/seaborne/tdb2/sys/TestDatabaseOps.java
index 67883a4..09b9804 100644
--- a/tdb2/src/test/java/org/seaborne/tdb2/sys/TestDatabaseOps.java
+++ b/tdb2/src/test/java/org/seaborne/tdb2/sys/TestDatabaseOps.java
@@ -90,8 +90,6 @@ public class TestDatabaseOps
Txn.executeWrite(dsgOld, ()->dsgOld.delete(quad1));
Txn.executeRead(dsg, ()->assertTrue(dsg.contains(quad1)) );
Txn.executeRead(dsg2, ()->assertTrue(dsg2.contains(quad1)) ) ;
-
- TDBInternal.expel(loc1, true);
}
// @Test public void compact_2() {