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)") ;