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 2013/03/01 15:50:23 UTC
svn commit: r1451605 - in
/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki:
server/DatasetRef.java servlets/HttpAction.java
Author: andy
Date: Fri Mar 1 14:50:23 2013
New Revision: 1451605
URL: http://svn.apache.org/r1451605
Log:
Add counters to dataset meta objects.
Modified:
jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java?rev=1451605&r1=1451604&r2=1451605&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java Fri Mar 1 14:50:23 2013
@@ -20,7 +20,9 @@ package org.apache.jena.fuseki.server;
import java.util.ArrayList ;
import java.util.List ;
+import java.util.concurrent.atomic.AtomicLong ;
+import com.hp.hpl.jena.query.ReadWrite ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
public class DatasetRef
@@ -34,8 +36,48 @@ public class DatasetRef
public List<String> readWriteGraphStoreEP = new ArrayList<String>() ;
public DatasetGraph dataset = null ;
+ /** Counter of active read transactions */
+ public AtomicLong activeReadTxn = new AtomicLong(0) ;
+
+ /** Counter of active write transactions */
+ public AtomicLong activeWriteTxn = 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 finishTxn(ReadWrite mode)
+ {
+ switch(mode)
+ {
+ case READ:
+ activeReadTxn.decrementAndGet() ;
+ break ;
+ case WRITE:
+ activeWriteTxn.decrementAndGet() ;
+ break ;
+ }
+ }
+
//TODO Need to be able to set this from the config file.
- public boolean allowDatasetUpdate = false;
+ public boolean allowDatasetUpdate = false;
public boolean allowTimeoutOverride = false;
public long maximumTimeoutOverride = Long.MAX_VALUE;
Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java?rev=1451605&r1=1451604&r2=1451605&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java Fri Mar 1 14:50:23 2013
@@ -18,6 +18,9 @@
package org.apache.jena.fuseki.servlets;
+import static com.hp.hpl.jena.query.ReadWrite.READ ;
+import static com.hp.hpl.jena.query.ReadWrite.WRITE ;
+
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
@@ -36,12 +39,13 @@ import com.hp.hpl.jena.sparql.core.Trans
public class HttpAction
{
- public final long id ;
+ public final long id ;
private DatasetGraph dsg ; // The data
private final Transactional transactional ;
private final boolean isTransactional;
- private DatasetRef desc ;
- private DatasetGraph activeDSG ; // Set when inside begin/end.
+ private final DatasetRef desc ;
+ private DatasetGraph activeDSG ; // Set when inside begin/end.
+ private ReadWrite activeMode ; // Set when inside begin/end.
public final HttpServletRequest request;
public final HttpServletResponse response ;
@@ -98,20 +102,26 @@ public class HttpAction
public void beginRead()
{
- transactional.begin(ReadWrite.READ) ;
+ activeMode = READ ;
+ transactional.begin(READ) ;
activeDSG = dsg ;
+ desc.startTxn(READ) ;
}
public void endRead()
{
+ desc.finishTxn(READ) ;
+ activeMode = null ;
transactional.end() ;
activeDSG = null ;
}
public void beginWrite()
{
- transactional.begin(ReadWrite.WRITE) ;
+ transactional.begin(WRITE) ;
+ activeMode = WRITE ;
activeDSG = dsg ;
+ desc.startTxn(WRITE) ;
}
public void commit()
@@ -128,6 +138,9 @@ public class HttpAction
public void endWrite()
{
+ desc.finishTxn(WRITE) ;
+ activeMode = null ;
+
if (transactional.isInTransaction())
{
Log.warn(this, "Transaction still active in endWriter - no commit or abort seen (forced abort)") ;