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 2018/08/12 09:53:52 UTC
[2/8] jena git commit: Update transactional usage to full range of
modes.
Update transactional usage to full range of modes.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ac9c769a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ac9c769a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ac9c769a
Branch: refs/heads/master
Commit: ac9c769ae2ccaa8826a2a0e7e83bb9f0b3ebeb72
Parents: 5a51311
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Aug 10 20:43:01 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Aug 10 20:43:01 2018 +0100
----------------------------------------------------------------------
.../apache/jena/fuseki/server/DataService.java | 48 +++----------
.../apache/jena/fuseki/servlets/HttpAction.java | 71 ++++++++++----------
.../jena/fuseki/servlets/REST_Quads_RW.java | 4 +-
.../jena/fuseki/servlets/SPARQL_GSP_RW.java | 6 +-
.../jena/fuseki/servlets/SPARQL_Update.java | 2 +-
5 files changed, 54 insertions(+), 77 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/ac9c769a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
index 2644b87..eccc402 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java
@@ -29,7 +29,7 @@ import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap;
import org.apache.jena.ext.com.google.common.collect.ListMultimap;
import org.apache.jena.fuseki.DEF ;
import org.apache.jena.fuseki.Fuseki ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.DatasetGraphFactory ;
import org.apache.jena.sparql.core.DatasetGraphReadOnly ;
@@ -151,50 +151,24 @@ public class DataService { //implements DatasetMXBean {
return counters.value(CounterName.RequestsBad) ;
}
- /** Counter of active read transactions */
- public AtomicLong activeReadTxn = new AtomicLong(0) ;
+ /** Counter of active transactions */
+ public AtomicLong activeTxn = new AtomicLong(0) ;
- /** Counter of active write transactions */
- public AtomicLong activeWriteTxn = new AtomicLong(0) ;
+ /** Cumulative counter of transactions */
+ public AtomicLong totalTxn = new AtomicLong(0) ;
- /** Cumulative counter of read transactions */
- public AtomicLong totalReadTxn = new AtomicLong(0) ;
-
- /** Cumulative counter of writer transactions */
- public AtomicLong totalWriteTxn = new AtomicLong(0) ;
-
- public void startTxn(ReadWrite mode)
- {
- switch(mode)
- {
- case READ:
- activeReadTxn.getAndIncrement() ;
- totalReadTxn.getAndIncrement() ;
- break ;
- case WRITE:
- activeWriteTxn.getAndIncrement() ;
- totalWriteTxn.getAndIncrement() ;
- break ;
- }
+ public void startTxn(TxnType mode) {
+ activeTxn.getAndIncrement();
+ totalTxn.getAndIncrement();
}
- public void finishTxn(ReadWrite mode)
- {
- switch(mode)
- {
- case READ:
- activeReadTxn.decrementAndGet() ;
- break ;
- case WRITE:
- activeWriteTxn.decrementAndGet() ;
- break ;
- }
- checkShutdown() ;
+ public void finishTxn() {
+ activeTxn.decrementAndGet();
}
private void checkShutdown() {
if ( state == CLOSING ) {
- if ( activeReadTxn.get() == 0 && activeWriteTxn.get() == 0 )
+ if ( activeTxn.get() == 0 )
shutdown() ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/ac9c769a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
index 79a6a5f..31eb0ca 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
@@ -18,8 +18,8 @@
package org.apache.jena.fuseki.servlets;
-import static org.apache.jena.query.ReadWrite.READ ;
-import static org.apache.jena.query.ReadWrite.WRITE ;
+import static org.apache.jena.query.TxnType.*;
+import static org.apache.jena.query.TxnType.WRITE;
import java.util.HashMap ;
import java.util.Map ;
@@ -31,7 +31,7 @@ import org.apache.jena.atlas.logging.Log ;
import org.apache.jena.fuseki.Fuseki ;
import org.apache.jena.fuseki.FusekiException ;
import org.apache.jena.fuseki.server.* ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
import org.apache.jena.sparql.SystemARQ ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.DatasetGraphWrapper ;
@@ -61,7 +61,6 @@ public class HttpAction
private Transactional transactional = null ;
private boolean isTransactional = false ;
private DatasetGraph activeDSG = null ; // Set when inside begin/end.
- private ReadWrite activeMode = null ; // Set when inside begin/end.
// -- Valid only for administration actions.
@@ -270,30 +269,50 @@ public class HttpAction
return isTransactional ;
}
- public void beginRead() {
- activeMode = READ ;
- transactional.begin(READ) ;
+ public void begin(TxnType txnType) {
+ transactional.begin(txnType);
activeDSG = dsg ;
- dataService.startTxn(READ) ;
+ dataService.startTxn(txnType) ;
+ }
+
+ public void begin() {
+ begin(READ_PROMOTE);
+ }
+
+ public void beginWrite() {
+ begin(WRITE);
+ }
+
+ public void beginRead() {
+ begin(READ);
}
public void endRead() {
- dataService.finishTxn(READ) ;
- activeMode = null ;
+ dataService.finishTxn() ;
+ transactional.commit();
transactional.end() ;
activeDSG = null ;
}
- public void beginWrite() {
- transactional.begin(WRITE) ;
- activeMode = WRITE ;
- activeDSG = dsg ;
- dataService.startTxn(WRITE) ;
+ public void end() {
+ dataService.finishTxn() ;
+
+ if ( transactional.isInTransaction() ) {
+ Log.warn(this, "Transaction still active - no commit or abort seen (forced abort)") ;
+ try {
+ transactional.abort() ;
+ } catch (RuntimeException ex) {
+ Log.warn(this, "Exception in forced abort (trying to continue)", ex) ;
+ }
+ }
+ transactional.end() ;
+ activeDSG = null ;
}
-
+
public void commit() {
+ dataService.finishTxn() ;
transactional.commit() ;
- activeDSG = null ;
+ end();
}
public void abort() {
@@ -305,23 +324,7 @@ public class HttpAction
// we try to continue server operation.
Log.warn(this, "Exception during abort (operation attempts to continue): "+ex.getMessage()) ;
}
- activeDSG = null ;
- }
-
- public void endWrite() {
- dataService.finishTxn(WRITE) ;
- activeMode = null ;
-
- if ( transactional.isInTransaction() ) {
- Log.warn(this, "Transaction still active in endWriter - no commit or abort seen (forced abort)") ;
- try {
- transactional.abort() ;
- } catch (RuntimeException ex) {
- Log.warn(this, "Exception in forced abort (trying to continue)", ex) ;
- }
- }
- transactional.end() ;
- activeDSG = null ;
+ end();
}
public final void startRequest() {
http://git-wip-us.apache.org/repos/asf/jena/blob/ac9c769a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_RW.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_RW.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_RW.java
index 10e36ac..98589c9 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_RW.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads_RW.java
@@ -109,7 +109,7 @@ public class REST_Quads_RW extends REST_Quads_R {
action.abort() ;
ServletOps.errorOccurred(ex.getMessage()) ;
} finally {
- action.endWrite() ;
+ action.end() ;
}
ServletOps.uploadResponse(action, details) ;
}
@@ -143,7 +143,7 @@ public class REST_Quads_RW extends REST_Quads_R {
} catch (Exception ex2) {}
ServletOps.errorOccurred(ex.getMessage()) ;
} finally {
- action.endWrite() ;
+ action.end() ;
}
ServletOps.uploadResponse(action, details) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/ac9c769a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_RW.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_RW.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_RW.java
index 7b964e2..4ba5ffe 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_RW.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_GSP_RW.java
@@ -68,7 +68,7 @@ public class SPARQL_GSP_RW extends SPARQL_GSP_R
deleteGraph(action) ;
action.commit() ;
}
- finally { action.endWrite() ; }
+ finally { action.end() ; }
ServletOps.successNoContent(action) ;
}
@@ -143,7 +143,7 @@ public class SPARQL_GSP_RW extends SPARQL_GSP_R
ServletOps.errorOccurred(ex.getMessage()) ;
return null ;
} finally {
- action.endWrite() ;
+ action.end() ;
}
}
@@ -188,7 +188,7 @@ public class SPARQL_GSP_RW extends SPARQL_GSP_R
try { action.abort() ; } catch (Exception ex2) {}
ServletOps.errorOccurred(ex.getMessage()) ;
return null ;
- } finally { action.endWrite() ; }
+ } finally { action.end() ; }
}
/** Delete a graph. This removes the storage choice and looses the setup.
http://git-wip-us.apache.org/repos/asf/jena/blob/ac9c769a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
index 539cbf5..2b05907 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Update.java
@@ -249,7 +249,7 @@ public class SPARQL_Update extends SPARQL_Protocol
try { action.abort() ; } catch (Exception ex2) {}
ServletOps.errorOccurred(ex.getMessage(), ex) ;
}
- } finally { action.endWrite(); }
+ } finally { action.end(); }
}
/* [It is an error to supply the using-graph-uri or using-named-graph-uri parameters