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 2012/08/28 19:09:48 UTC

svn commit: r1378236 - in /jena/trunk/jena-fuseki: ReleaseNotes.txt src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java

Author: andy
Date: Tue Aug 28 17:09:47 2012
New Revision: 1378236

URL: http://svn.apache.org/viewvc?rev=1378236&view=rev
Log:
JENA-307
Close QueryExecution after a query.

Modified:
    jena/trunk/jena-fuseki/ReleaseNotes.txt
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java

Modified: jena/trunk/jena-fuseki/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/ReleaseNotes.txt?rev=1378236&r1=1378235&r2=1378236&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/ReleaseNotes.txt (original)
+++ jena/trunk/jena-fuseki/ReleaseNotes.txt Tue Aug 28 17:09:47 2012
@@ -2,6 +2,7 @@
 
 == Fuseki 0.2.4
 
++ JENA-307 - Close QueryExecution object after query execution. 
 + JENA-295 - Implement using-graph-uri= and using-named-graph-uri=
 + Add support for default-graph-uri= and named-graph-uri= query parameters to a dataset.
   It picks the specific graphs out of the dataset for the query. 

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java?rev=1378236&r1=1378235&r2=1378236&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java Tue Aug 28 17:09:47 2012
@@ -69,8 +69,20 @@ public class ResponseResultSet
     static AcceptList prefContentTypeResultSet     = DEF.rsOffer ; 
     static AcceptList prefContentTypeRDF           = DEF.rdfOffer ;
 
+    public static void doResponseResultSet(Boolean booleanResult, HttpServletRequest request, HttpServletResponse response)
+    {
+        doResponseResultSet$(null, booleanResult, request, response) ;
+    }
+
+    public static void doResponseResultSet(ResultSet resultSet, HttpServletRequest request, HttpServletResponse response)
+    {
+        doResponseResultSet$(resultSet, null, request, response) ;
+    }
+    
+    // if we refatcor the conneg into a single function, we can split boolean and result set handling. 
+    
     // One or the other argument must be null
-    public static void doResponseResultSet(final ResultSet resultSet, final Boolean booleanResult, HttpServletRequest request, HttpServletResponse response)
+    private static void doResponseResultSet$(final ResultSet resultSet, final Boolean booleanResult, HttpServletRequest request, HttpServletResponse response)
     {
         if ( resultSet == null && booleanResult == null )
         {

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java?rev=1378236&r1=1378235&r2=1378236&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java Tue Aug 28 17:09:47 2012
@@ -246,10 +246,16 @@ public abstract class SPARQL_Query exten
         
         // Assumes finished whole thing by end of sendResult. 
         action.beginRead() ;
+        QueryExecution qExec = null ;
         try {
-            SPARQLResult result = executeQuery(action, query, queryStringLog) ;
+            Dataset dataset = decideDataset(action, query, queryStringLog) ; 
+            qExec = createQueryExecution(query, dataset) ;
+            SPARQLResult result = executeQuery(action, qExec, query, queryStringLog) ;
             sendResults(action, result) ;
-        } finally { action.endRead() ; }
+        } finally { 
+            if ( qExec != null )
+                qExec.close() ;
+            action.endRead() ; }
     }
 
     /** Check the query - throw ActionErrorException or call super.error* */
@@ -260,15 +266,13 @@ public abstract class SPARQL_Query exten
         return QueryExecutionFactory.create(query, dataset) ;
     }
 
-    protected SPARQLResult executeQuery(HttpActionQuery action, Query query, String queryStringLog)
+    protected SPARQLResult executeQuery(HttpActionQuery action, QueryExecution qExec, Query query, String queryStringLog)
     {
-        Dataset dataset = decideDataset(action, query, queryStringLog) ; 
-        QueryExecution qexec = createQueryExecution(query, dataset) ;
-        setAnyTimeouts(qexec, action);
+        setAnyTimeouts(qExec, action);
 
         if ( query.isSelectType() )
         {
-            ResultSet rs = qexec.execSelect() ;
+            ResultSet rs = qExec.execSelect() ;
             
             // Force some query execution now.
             // Do this to force the query to do something that should touch any underlying database,
@@ -276,8 +280,8 @@ public abstract class SPARQL_Query exten
             // MySQL can time out after 8 hours of an idle connection
             rs.hasNext() ;
 
-//            // Not necessary if we are inside a read lock until the end of sending results. 
-//            rs = ResultSetFactory.copyResults(rs) ;
+            // Not necessary if we are inside a read transaction or lock until the end of sending results. 
+            // rs = ResultSetFactory.copyResults(rs) ;
 
             log.info(format("[%d] OK/select", action.id)) ;
             return new SPARQLResult(rs) ;
@@ -285,21 +289,21 @@ public abstract class SPARQL_Query exten
 
         if ( query.isConstructType() )
         {
-            Model model = qexec.execConstruct() ;
+            Model model = qExec.execConstruct() ;
             log.info(format("[%d] OK/construct", action.id)) ;
             return new SPARQLResult(model) ;
         }
 
         if ( query.isDescribeType() )
         {
-            Model model = qexec.execDescribe() ;
+            Model model = qExec.execDescribe() ;
             log.info(format("[%d] OK/describe",action.id)) ;
             return new SPARQLResult(model) ;
         }
 
         if ( query.isAskType() )
         {
-            boolean b = qexec.execAsk() ;
+            boolean b = qExec.execAsk() ;
             log.info(format("[%d] OK/ask",action.id)) ;
             return new SPARQLResult(b) ;
         }
@@ -339,12 +343,11 @@ public abstract class SPARQL_Query exten
     protected void sendResults(HttpActionQuery action, SPARQLResult result)
     {
         if ( result.isResultSet() )
-            ResponseResultSet.doResponseResultSet(result.getResultSet(), null, action.request, action.response) ;
+            ResponseResultSet.doResponseResultSet(result.getResultSet(), action.request, action.response) ;
         else if ( result.isGraph() )
             ResponseModel.doResponseModel(result.getModel(), action.request, action.response) ;
         else if ( result.isBoolean() )
-            // Make different?
-            ResponseResultSet.doResponseResultSet(null, result.getBooleanResult(), action.request, action.response) ;
+            ResponseResultSet.doResponseResultSet(result.getBooleanResult(), action.request, action.response) ;
         else
             errorOccurred("Unknown or invalid result type") ;
     }