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() ; }
}