From commits-return-20040-archive-asf-public=cust-asf.ponee.io@jena.apache.org Sun Aug 12 11:53:54 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id AD8C81807A1 for ; Sun, 12 Aug 2018 11:53:53 +0200 (CEST) Received: (qmail 66514 invoked by uid 500); 12 Aug 2018 09:53:52 -0000 Mailing-List: contact commits-help@jena.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jena.apache.org Delivered-To: mailing list commits@jena.apache.org Received: (qmail 66339 invoked by uid 99); 12 Aug 2018 09:53:52 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Aug 2018 09:53:52 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 18C9AE0AE9; Sun, 12 Aug 2018 09:53:51 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: andy@apache.org To: commits@jena.apache.org Date: Sun, 12 Aug 2018 09:53:52 -0000 Message-Id: In-Reply-To: <7295bbd8d384480885d29e4722d31c29@git.apache.org> References: <7295bbd8d384480885d29e4722d31c29@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [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 Authored: Fri Aug 10 20:43:01 2018 +0100 Committer: Andy Seaborne 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