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 2014/10/13 14:16:31 UTC

[3/3] git commit: Attempt to protected against client leaving before allresults have been sent.

Attempt to protected against client leaving before allresults have been
sent.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/bb18447c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/bb18447c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/bb18447c

Branch: refs/heads/master
Commit: bb18447c499dea4867e1bc740837018921cd5084
Parents: 1763029
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Oct 13 13:16:13 2014 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Oct 13 13:16:13 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/servlets/SPARQL_Query.java     | 6 ++++++
 .../org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java    | 4 ++++
 .../src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java  | 1 +
 .../main/java/org/apache/jena/fuseki/server/CounterName.java   | 3 +--
 .../main/java/org/apache/jena/fuseki/servlets/ActionBase.java  | 4 ++++
 .../java/org/apache/jena/fuseki/servlets/ActionSPARQL.java     | 3 ++-
 .../org/apache/jena/fuseki/servlets/ResponseResultSet.java     | 3 ++-
 .../java/org/apache/jena/fuseki/servlets/SPARQL_Query.java     | 5 -----
 8 files changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index 09378c5..27e76ac 100644
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -31,6 +31,7 @@ import java.util.* ;
 import javax.servlet.http.HttpServletRequest ;
 import javax.servlet.http.HttpServletResponse ;
 
+import org.apache.jena.atlas.RuntimeIOException ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.atlas.web.ContentType ;
@@ -235,6 +236,8 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
         } catch (QueryParseException ex) {
             incCounter(action.srvRef, RequestsBad) ;
             errorBadRequest("Parse error: \n" + queryString + "\n\r" + messageForQPE(ex)) ;
+        } catch (RuntimeIOException ex) {
+            errorBadRequest("Runtime IO Exception: \n" + queryString + "\n\r" + ex.getMessage()) ;
         }
         // Should not happen.
         catch (QueryException ex) {
@@ -254,6 +257,9 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
             // Additional counter information.
             incCounter(action.srvRef, QueryTimeouts) ; 
             throw ex ; 
+        } catch (RuntimeIOException ex) {
+            incCounter(action.srvRef, QueryExecErrors) ;
+            throw ex ;
         } catch (QueryExecException ex) { 
             // Additional counter information.
             incCounter(action.srvRef, QueryExecErrors) ; 

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
----------------------------------------------------------------------
diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
index d8bd4b0..a3d5271 100644
--- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
+++ b/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
@@ -32,6 +32,7 @@ import javax.servlet.ServletException ;
 import javax.servlet.http.HttpServletRequest ;
 import javax.servlet.http.HttpServletResponse ;
 
+import org.apache.jena.atlas.RuntimeIOException ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.HttpNames ;
 import org.apache.jena.fuseki.server.* ;
@@ -90,6 +91,9 @@ public abstract class SPARQL_ServletBase extends ServletBase
                     responseSendError(response, ex.rc, ex.message) ;
                 else
                     responseSendError(response, ex.rc) ;
+            } catch (RuntimeIOException ex) {
+                log.warn(format("[%d] Runtime IO Exception (client left?) RC = %d", id, HttpSC.INTERNAL_SERVER_ERROR_500)) ;
+                responseSendError(response, HttpSC.INTERNAL_SERVER_ERROR_500, ex.getMessage()) ;
             } catch (Throwable ex) {
                 // This should not happen.
                 //ex.printStackTrace(System.err) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
index 55f69cb..490bce2 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
@@ -168,6 +168,7 @@ public class ActionStats extends ActionContainerItem
         out.println("    Bad requests  = "+counter(dSrv, OperationName.Query, CounterName.RequestsBad)) ;
         out.println("    Timeouts      = "+counter(dSrv, OperationName.Query, CounterName.QueryTimeouts)) ;
         out.println("    Bad exec      = "+counter(dSrv, OperationName.Query, CounterName.QueryExecErrors)) ;
+        out.println("    IO Errors     = "+counter(dSrv, OperationName.Query, CounterName.QueryIOErrors)) ;
 
         out.println("  SPARQL Update:") ;
         out.println("    Request       = "+counter(dSrv, OperationName.Update, CounterName.Requests)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/CounterName.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/CounterName.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/CounterName.java
index 80aebed..7a8d306 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/CounterName.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/CounterName.java
@@ -22,8 +22,6 @@ package org.apache.jena.fuseki.server;
 public enum CounterName {
     // There are generic names - apply to all services and datasets - and
     // also specific ones that relate only to a particular kind of service.
-    // By having a fixed list, we 
-
     
     // Total request received
     Requests("requests"),
@@ -39,6 +37,7 @@ public enum CounterName {
     // Query - standard and ... 
     QueryTimeouts("query.timeouts") ,
     QueryExecErrors("query.execerrors") ,
+    QueryIOErrors("query.ioerrors") ,
     
     // Update - standard and ...
     UpdateExecErrors("update.execerrors"),

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
index 6bfd25b..18d4c82 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
@@ -28,6 +28,7 @@ import javax.servlet.ServletException ;
 import javax.servlet.http.HttpServletRequest ;
 import javax.servlet.http.HttpServletResponse ;
 
+import org.apache.jena.atlas.RuntimeIOException ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.riot.web.HttpNames ;
 import org.apache.jena.web.HttpSC ;
@@ -91,6 +92,9 @@ public abstract class ActionBase extends ServletBase
                     ServletOps.responseSendError(response, ex.rc, ex.message) ;
                 else
                     ServletOps.responseSendError(response, ex.rc) ;
+            } catch (RuntimeIOException ex) {
+                log.warn(format("[%d] Runtime IO Exception (client left?) RC = %d : %s", id, HttpSC.INTERNAL_SERVER_ERROR_500, ex.getMessage()), ex) ;
+                ServletOps.responseSendError(response, HttpSC.INTERNAL_SERVER_ERROR_500, ex.getMessage()) ;
             } catch (Throwable ex) {
                 // This should not happen.
                 //ex.printStackTrace(System.err) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
index 08cf565..d26bc55 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ActionSPARQL.java
@@ -24,6 +24,7 @@ import static org.apache.jena.fuseki.server.CounterName.RequestsGood ;
 
 import java.io.InputStream ;
 
+import org.apache.jena.atlas.RuntimeIOException ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.server.* ;
 import org.apache.jena.riot.Lang ;
@@ -130,7 +131,7 @@ public abstract class ActionSPARQL extends ActionBase
                 // Success
                 incCounter(csOperation, RequestsGood) ;
                 incCounter(csService, RequestsGood) ;
-            } catch (ActionErrorException | QueryCancelledException ex) {
+            } catch (ActionErrorException | QueryCancelledException | RuntimeIOException ex) {
                 incCounter(csOperation, RequestsBad) ;
                 incCounter(csService, RequestsBad) ;
                 throw ex ;

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
index 897329a..f87e56b 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
@@ -38,6 +38,7 @@ import javax.servlet.ServletOutputStream ;
 import javax.servlet.http.HttpServletRequest ;
 import javax.servlet.http.HttpServletResponse ;
 
+import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.web.AcceptList ;
 import org.apache.jena.atlas.web.MediaType ;
 import org.apache.jena.fuseki.DEF ;
@@ -230,7 +231,7 @@ public class ResponseResultSet
 
             if ( callback != null )
                 out.println(")") ;
-        } catch (IOException ex) { ServletOps.errorOccurred(ex) ; }
+        } catch (IOException ex) { IO.exception(ex) ; }
     }
     
     private static void textOutput(HttpAction action, String contentType, final ResultSet resultSet, final Prologue qPrologue, final Boolean booleanResult)

http://git-wip-us.apache.org/repos/asf/jena/blob/bb18447c/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index 11917a1..afa42ae 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -19,7 +19,6 @@
 package org.apache.jena.fuseki.servlets ;
 
 import static java.lang.String.format ;
-import static org.apache.jena.fuseki.server.CounterName.QueryExecErrors ;
 import static org.apache.jena.fuseki.server.CounterName.QueryTimeouts ;
 import static org.apache.jena.riot.WebContent.ctHTMLForm ;
 import static org.apache.jena.riot.WebContent.ctSPARQLQuery ;
@@ -259,10 +258,6 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
             // Additional counter information.
             incCounter(action.getEndpoint().getCounters(), QueryTimeouts) ;
             throw ex ;
-        } catch (QueryExecException ex) {
-            // Additional counter information.
-            incCounter(action.getEndpoint().getCounters(), QueryExecErrors) ;
-            throw ex ;
         } finally { action.endRead() ; }
     }