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/11/05 13:02:41 UTC
svn commit: r1197941 - in /incubator/jena: Jena2/ARQ/trunk/ Jena2/SDB/trunk/
Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/
Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/
Scratch/AFS/Jena-Dev/trunk/src/dev/
Author: andy
Date: Sat Nov 5 12:02:40 2011
New Revision: 1197941
URL: http://svn.apache.org/viewvc?rev=1197941&view=rev
Log:
Notes for JENA-154
Added:
incubator/jena/Jena2/SDB/trunk/L
Modified:
incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java
incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/T_TransSystem.java
incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/ReportJena154_GraphVarScope.java
incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java
Modified: incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt (original)
+++ incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt Sat Nov 5 12:02:40 2011
@@ -4,6 +4,7 @@ ChangeLog for ARQ
==== ARQ 2.8.9
** Java 6 is now required for running ARQ.
++ BUG FIX: Mis-execution of GRAPH ?g { .. } where ?g used inside { .. } (JENA-154)
+ REGEX now accepts xsd:string and literals with language tags in the first argument.
+ Add function STRBEFORE, STRAFTER and REPLACE for SPARQL 1.1
+ Add function UUID [ARQ language only]
Added: incubator/jena/Jena2/SDB/trunk/L
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/SDB/trunk/L?rev=1197941&view=auto
==============================================================================
--- incubator/jena/Jena2/SDB/trunk/L (added)
+++ incubator/jena/Jena2/SDB/trunk/L Sat Nov 5 12:02:40 2011
@@ -0,0 +1,20 @@
+src/com/hp/hpl/jena/sdb/assembler/AssemblerVocab.java: // ModeRDB graph name - on the connection
+src/com/hp/hpl/jena/sdb/assembler/AssemblerVocab.java: public static final Property pRDBtype = Vocab.property(NS, "rdbType") ;
+src/com/hp/hpl/jena/sdb/assembler/AssemblerVocab.java: // ModeRDB graph name - on the layout
+src/com/hp/hpl/jena/sdb/assembler/AssemblerVocab.java: public static final Property pModelRDBname = Vocab.property(NS, "rdbModelName") ;
+src/com/hp/hpl/jena/sdb/assembler/SDBConnectionDescAssembler.java: sDesc.setRdbType( GraphUtils.getStringValue(root, AssemblerVocab.pRDBtype) ) ;
+src/com/hp/hpl/jena/sdb/assembler/StoreDescAssembler.java: // ModelRDB special
+src/com/hp/hpl/jena/sdb/assembler/StoreDescAssembler.java: storeDesc.rdbModelName = GraphUtils.getStringValue(root, AssemblerVocab.pModelRDBname) ;
+src/com/hp/hpl/jena/sdb/StoreDesc.java: /** ModelRDB spefic */
+src/com/hp/hpl/jena/sdb/layout1/TableDescRDB.java:public class TableDescRDB extends TableDescTriples
+src/com/hp/hpl/jena/sdb/layout1/TableDescRDB.java: public TableDescRDB()
+src/com/hp/hpl/jena/sdb/graph/PrefixMappingSDB.java: // ModelRDB does not support prefixes in the same way as models/graphs over SDB stores.
+src/com/hp/hpl/jena/sdb/sql/SDBConnectionDesc.java: public String rdbType = null ; // ModelRDB specific
+src/com/hp/hpl/jena/sdb/store/Feature.java:// LayoutRDB { public String getName() { return "RDB" ; } } ,
+src/com/hp/hpl/jena/sdb/store/LayoutType.java: public static final LayoutType LayoutRDB = new LayoutType("layoutRDB") ;
+src/com/hp/hpl/jena/sdb/store/LayoutType.java: register(LayoutRDB) ;
+src/sdb/sdbprint.java: if ( storeDesc.getLayout() != LayoutType.LayoutRDB )
+src/sdb/sdbprint.java: // Only fake the connection if not ModelRDB
+src-dev/dev/RDB.java:/** Setup RDB properties */
+src-dev/dev/RDB.java:public class RDB
+src-test/com/hp/hpl/jena/sdb/test/misc/TestRegistry.java: "layoutRDB" } ;
Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/Transaction.java Sat Nov 5 12:02:40 2011
@@ -152,7 +152,7 @@ public class Transaction
abort() ;
}
break ;
- default:
+ default:
}
state = TxnState.CLOSED ;
@@ -185,7 +185,63 @@ public class Transaction
}
public void addIterator(Iterator<?> iter) { iterators.add(iter) ; }
- public void removeIterator(Iterator<?> iter) { iterators.remove(iter) ; }
+ //public void removeIterator(Iterator<?> iter) { iterators.remove(iter) ; }
+
+ private volatile StackTraceElement[] enteredThread = null ;
+ private volatile String previousThreadName = null ;
+ private static final int SLEN = 25 ;
+ private static final Object lock = new Object() ;
+ private static volatile int counter = 0 ;
+ private static volatile Transaction otherTransaction = null ;
+ /*package*/ volatile boolean flushed = false ;
+
+ public void removeIterator(Iterator<? > iter)
+ {
+ if ( false )
+ iterators.remove(iter) ;
+ else
+ {
+ StackTraceElement[] previousThread = enteredThread ;
+ Transaction otherTransaction2 = otherTransaction ;
+ if (previousThread != null)
+ {
+ synchronized(lock)
+ {
+ Thread currentThread = Thread.currentThread() ;
+ System.out.println() ;
+ System.out.println("2 threads accessing removeIterator at the same time in transaction") ;
+ System.out.println("Previous: "+ otherTransaction2) ;
+ System.out.println("Current: "+ this) ;
+ System.out.println("Transaction flushed: "+flushed) ;
+ System.out.println("Iterator recorded: "+iterators.contains(iter)) ;
+
+ System.out.println("previous thread:" + previousThreadName) ;
+
+ for (int i = 0; i < Math.min(SLEN, previousThread.length); i++)
+ {
+ System.out.println(" "+previousThread[i].toString()) ;
+ }
+ System.out.println() ;
+ System.out.println("current thread:" + currentThread.getName()) ;
+ StackTraceElement[] currentStackTrace = currentThread.getStackTrace() ;
+ for (int i = 0; i < Math.min(SLEN, currentStackTrace.length); i++)
+ {
+ System.out.println(" "+currentStackTrace[i].toString()) ;
+ }
+ counter ++ ;
+ if ( counter >= 1 )
+ System.exit(-99) ;
+ }
+ }
+ otherTransaction = this ;
+ enteredThread = Thread.currentThread().getStackTrace() ;
+ previousThreadName = Thread.currentThread().getName() ;
+ iterators.remove(iter) ;
+ enteredThread = null ;
+ otherTransaction = null ;
+ }
+ }
+
public List<Iterator<?>> iterators() { return Collections.unmodifiableList(iterators) ; }
public List<TransactionLifecycle> components()
Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/TransactionManager.java Sat Nov 5 12:02:40 2011
@@ -381,6 +381,7 @@ public class TransactionManager
x.commitEnact(transaction) ;
x.commitClearup(transaction) ;
}
+ transaction.flushed = true ;
}
void processDelayedReplayQueue(Transaction txn)
Modified: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/T_TransSystem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/T_TransSystem.java?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/T_TransSystem.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/transaction/T_TransSystem.java Sat Nov 5 12:02:40 2011
@@ -68,7 +68,7 @@ public class T_TransSystem
log.error("**** Running with file mapped mode on MS Windows - expected test failure") ;
}
- static boolean MEM = false ;
+ static boolean MEM = true ;
static final Location LOC = MEM ? Location.mem() : new Location(ConfigTest.getTestingDirDB()) ;
@@ -77,11 +77,6 @@ public class T_TransSystem
static boolean inlineProgress = true ; // (! log.isDebugEnabled()) && Iterations > 20 ;
static boolean logging = ! inlineProgress ; // (! log.isDebugEnabled()) && Iterations > 20 ;
- /*
- * 5/0/5 blocks. with 50/50 pause, 50R/ 20W
- * Others?
- */
-
static final int numReaderTasks = 5 ;
static final int numWriterTasksA = 2 ;
static final int numWriterTasksC = 5 ;
@@ -137,9 +132,11 @@ public class T_TransSystem
private static void clean()
{
- StoreConnection.release(LOC) ;
if ( ! LOC.isMem() )
+ {
+ StoreConnection.release(LOC) ;
FileOps.clearDirectory(LOC.getDirectoryPath()) ;
+ }
}
static class Reader implements Callable<Object>
@@ -154,7 +151,7 @@ public class T_TransSystem
this.maxpause = pause ;
this.sConn = sConn ;
}
-
+
@Override
public Object call()
{
@@ -205,7 +202,7 @@ public class T_TransSystem
this.sConn = sConn ;
this.commit = commit ;
}
-
+
@Override
public Object call()
{
@@ -333,9 +330,9 @@ public class T_TransSystem
}
} ;
- submit(execService, procR, numReaderTasks) ;
- submit(execService, procW_c, numWriterTasksC) ;
- submit(execService, procW_a, numWriterTasksA) ;
+ submit(execService, procR, numReaderTasks, "READ-") ;
+ submit(execService, procW_c, numWriterTasksC, "COMMIT-") ;
+ submit(execService, procW_a, numWriterTasksA, "ABORT-") ;
try
{
@@ -347,10 +344,24 @@ public class T_TransSystem
}
}
- private void submit(ExecutorService execService2, Callable<?> proc, int numTasks)
+ static class Callable2Runnable<T> implements Runnable
+ {
+ private Callable<T> callable ;
+
+ Callable2Runnable(Callable<T> callable) { this.callable = callable ; }
+
+ @Override public void run() { try { callable.call() ; } catch (Exception ex) {} }
+ }
+
+ private static int counter = 0 ;
+ private <T> void submit(ExecutorService execService, Callable<T> proc, int numTasks, String label)
{
for ( int i = 0 ; i < numTasks ; i++ )
- execService.submit(proc) ;
+ {
+ //execService.submit(proc) ;
+ counter++ ;
+ new Thread(new Callable2Runnable<T>(proc), label+counter).start() ;
+ }
}
static int changeProc(DatasetGraphTxn dsg, int id, int i)
Modified: incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/ReportJena154_GraphVarScope.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/ReportJena154_GraphVarScope.java?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/ReportJena154_GraphVarScope.java (original)
+++ incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/ReportJena154_GraphVarScope.java Sat Nov 5 12:02:40 2011
@@ -22,20 +22,10 @@ import java.util.List ;
import org.openjena.atlas.logging.Log ;
-import com.hp.hpl.jena.query.ARQ ;
-import com.hp.hpl.jena.query.DatasetFactory ;
-import com.hp.hpl.jena.query.Query ;
-import com.hp.hpl.jena.query.QueryExecution ;
-import com.hp.hpl.jena.query.QueryExecutionFactory ;
-import com.hp.hpl.jena.query.QueryFactory ;
-import com.hp.hpl.jena.query.ResultSet ;
-import com.hp.hpl.jena.query.ResultSetFactory ;
-import com.hp.hpl.jena.query.ResultSetFormatter ;
+import com.hp.hpl.jena.query.* ;
import com.hp.hpl.jena.sparql.algebra.Algebra ;
import com.hp.hpl.jena.sparql.algebra.Op ;
import com.hp.hpl.jena.sparql.algebra.OpVars ;
-import com.hp.hpl.jena.sparql.algebra.optimize.Optimize ;
-import com.hp.hpl.jena.sparql.algebra.optimize.TransformFilterPlacement ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
import com.hp.hpl.jena.sparql.core.Quad ;
@@ -54,10 +44,55 @@ public class ReportJena154_GraphVarScope
static { Log.setLog4j() ; }
static String queryStr =
- "SELECT ?g WHERE { GRAPH ?g { ?s ?p ?o FILTER (str(?g) = 'graphURI') } }";
+ "SELECT ?g WHERE { GRAPH ?g { ?s ?p ?o } FILTER (str(?g) = 'graphURI') }";
//"SELECT ?g WHERE { GRAPH ?g { ?s ?p ?o . } }";
public static void main(String[] args) {
+ Op op1 = SSE.parseOp("(quadpattern (quad ?g ?s ?p ?o))") ;
+ Op op2 = SSE.parseOp("(quadpattern (quad ?g ?s ?p ?o))") ;
+
+ System.out.println(op1.equals(op2)) ;
+
+ //execute() ;
+ }
+
+ public static void print()
+ {
+ String tests[] = {
+ null
+ , "{ GRAPH ?g { ?s ?p ?o } }"
+ // Not nested
+ , "{ GRAPH ?g { ?s ?p ?o } GRAPH ?g1 { ?s1 ?p1 ?o1 } }"
+ , "{ GRAPH ?g { ?s ?p ?o } GRAPH ?g { ?s1 ?p1 ?o1 } }"
+ // Nested
+ , "{ GRAPH ?g { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 } } }"
+ , "{ GRAPH ?g { ?s ?p ?o GRAPH ?g { ?s1 ?p1 ?o1 } } }"
+ // Filters
+ , "{ GRAPH ?g { ?s ?p ?o FILTER (str(?g) = 'graphURI') } }"
+ , "{ GRAPH ?g { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 FILTER (str(?g) = 'graphURI') } } }"
+ , "{ GRAPH ?g { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 FILTER (str(?g1) = 'graphURI') } } }"
+ // Tricky pattern ... twice.
+ , "{ GRAPH ?g { ?s ?p ?o FILTER (str(?g) = 'graphURI') } " +
+ " GRAPH ?g { ?s ?p ?o FILTER (str(?g) = 'graphURI') }"
+ + "}"
+
+ } ;
+
+ for ( String qs : tests )
+ {
+ if ( qs == null ) continue ;
+ Query q = QueryFactory.create("SELECT * WHERE "+qs) ;
+ System.out.print(q) ;
+ Op op = Algebra.compile(q) ;
+ System.out.print(op) ;
+ op = Algebra.optimize(op) ;
+ op = Algebra.toQuadForm(op) ;
+ System.out.print(op) ;
+ System.out.println("------------------------------------------------") ;
+ }
+ }
+
+ public static void execute() {
if ( false )
ARQ.setExecutionLogging(Explain.InfoLevel.ALL) ;
@@ -67,32 +102,6 @@ public class ReportJena154_GraphVarScope
if ( true )
{
- // See AlgebraQuad.TransformQuadGraph.transform(OpGraph, Op)
-
- Query q = QueryFactory.create(queryStr) ;
- System.out.println(q) ;
- Op op1 = Algebra.compile(q) ;
-
- //Op op1a = Algebra.optimize(op1) ;
- //System.out.println(op1a) ;
- //Op op2a = Algebra.toQuadForm(op1a) ;
-
- Op op2 = Algebra.toQuadForm(op1) ;
- System.out.println(op2) ;
- System.exit(0) ;
-
-
- Op op3 = Optimize.apply(new TransformFilterPlacement(), op2) ;
-
- execute(op2) ;
- System.out.println() ;
- execute(op3) ;
-
- System.exit(0) ;
- }
-
- if ( true )
- {
System.out.println("Plain ARQ") ;
DatasetGraph dsg = DatasetGraphFactory.createMem() ;
setup(dsg) ;
@@ -100,8 +109,6 @@ public class ReportJena154_GraphVarScope
System.out.println() ;
}
- System.exit(0) ;
-
if ( true )
{
System.out.println("Plain TDB") ;
Modified: incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java?rev=1197941&r1=1197940&r2=1197941&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java (original)
+++ incubator/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Run.java Sat Nov 5 12:02:40 2011
@@ -64,7 +64,6 @@ public class Run
String DIR = "tmp/DB" ;
FileOps.ensureDir("tmp") ;
FileOps.ensureDir(DIR) ;
-
String qs = "PREFIX f: <"+ns+"> SELECT * { ?s ?p ?o }" ;
@@ -81,8 +80,6 @@ public class Run
t1.join() ;
t2.join() ;
-
-
}
static class Killer implements Runnable