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/07/28 12:04:30 UTC
svn commit: r1507774 - in /jena/branches/jena-218: pages/
src/main/java/org/apache/jena/fuseki/server/
src/main/java/org/apache/jena/fuseki/servlets/
Author: andy
Date: Sun Jul 28 10:04:30 2013
New Revision: 1507774
URL: http://svn.apache.org/r1507774
Log:
JENA-218
Changes from jena-218-default-timeout.diff (18/Jul/13).
default timeout and maximum timeout (as single numeric values).
Modified:
jena/branches/jena-218/pages/sparql.html
jena/branches/jena-218/pages/sparql.tpl
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
Modified: jena/branches/jena-218/pages/sparql.html
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/pages/sparql.html?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/pages/sparql.html (original)
+++ jena/branches/jena-218/pages/sparql.html Sun Jul 28 10:04:30 2013
@@ -50,7 +50,9 @@
<input name="stylesheet" size="20" value="/xml-to-html.xsl" />
<br/>
<input type="checkbox" name="force-accept" value="text/plain"/>
- Force the accept header to <tt>text/plain</tt> regardless
+ Force the accept header to <tt>text/plain</tt> regardless
+ <br/>
+ Timeout: <input type="text" name="timeout"/> (seconds; leave blank for server default)
<br/>
<input type="submit" value="Get Results" />
</p>
Modified: jena/branches/jena-218/pages/sparql.tpl
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/pages/sparql.tpl?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/pages/sparql.tpl (original)
+++ jena/branches/jena-218/pages/sparql.tpl Sun Jul 28 10:04:30 2013
@@ -63,6 +63,8 @@
<br/>
<input type="checkbox" name="force-accept" value="text/plain"/>
Force the accept header to <tt>text/plain</tt> regardless.
+ <br/>
+ Timeout: <input type="text" name="timeout" size="4"/> (seconds; leave blank for server default)
<br/>
<input type="submit" value="Get Results" />
</form>
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java Sun Jul 28 10:04:30 2013
@@ -145,7 +145,8 @@ public class DatasetRef implements Datas
//TODO Need to be able to set this from the config file.
public boolean allowDatasetUpdate = false;
-
+
+ public long defaultTimeout = Long.MAX_VALUE;
public boolean allowTimeoutOverride = false;
public long maximumTimeoutOverride = Long.MAX_VALUE;
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java Sun Jul 28 10:04:30 2013
@@ -222,12 +222,17 @@ public class FusekiConfig
addServiceEP("graphStore(RW)", sDesc.name, sDesc.readWriteGraphStore, svc, "fu:serviceReadWriteGraphStore") ;
addServiceEP("graphStore(R)", sDesc.name, sDesc.readGraphStore, svc, "fu:serviceReadGraphStore") ;
// Extract timeout overriding configuration if present.
+ if (svc.hasProperty(FusekiVocab.pDefaultTimeout)) {
+ sDesc.defaultTimeout = (long) (svc.getProperty(FusekiVocab.pDefaultTimeout).getObject().asLiteral().getFloat() * 1000);
+ }
if (svc.hasProperty(FusekiVocab.pAllowTimeoutOverride)) {
sDesc.allowTimeoutOverride = svc.getProperty(FusekiVocab.pAllowTimeoutOverride).getObject().asLiteral().getBoolean();
if (svc.hasProperty(FusekiVocab.pMaximumTimeoutOverride)) {
- sDesc.maximumTimeoutOverride = (int) (svc.getProperty(FusekiVocab.pMaximumTimeoutOverride).getObject().asLiteral().getFloat() * 1000);
+ sDesc.maximumTimeoutOverride = (long) (svc.getProperty(FusekiVocab.pMaximumTimeoutOverride).getObject().asLiteral().getFloat() * 1000);
}
}
+ log.info(" timeouts = default: " + (sDesc.defaultTimeout == Long.MAX_VALUE ? "unlimited" : sDesc.defaultTimeout + "ms")
+ + (sDesc.allowTimeoutOverride ? (", max: " + (sDesc.maximumTimeoutOverride == Long.MAX_VALUE ? "unlimited" : sDesc.maximumTimeoutOverride + "ms")) : ", cannot be overridden"));
Resource datasetDesc = ((Resource)getOne(svc, "fu:dataset")) ;
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/server/FusekiVocab.java Sun Jul 28 10:04:30 2013
@@ -41,6 +41,7 @@ public class FusekiVocab
public static final Property pServiceReadWriteGraphStoreEP = property("serviceReadWriteGraphStore") ;
public static final Property pServiceReadgraphStoreEP = property("serviceReadGraphStore") ;
+ public static final Property pDefaultTimeout = property("defaultTimeout");
public static final Property pAllowTimeoutOverride = property("allowTimeoutOverride");
public static final Property pMaximumTimeoutOverride = property("maximumTimeoutOverride");
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java Sun Jul 28 10:04:30 2013
@@ -60,6 +60,9 @@ public class HttpAction
private long startTime = -2 ;
private long finishTime = -2 ;
+
+ // Set by e.g. SPARQL_Query.setAnyTimeouts(), for picking up later.
+ public long timeout = Long.MAX_VALUE;
// Incoming
//public final
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java Sun Jul 28 10:04:30 2013
@@ -20,6 +20,9 @@ package org.apache.jena.fuseki.servlets;
import static java.lang.String.format ;
import static org.apache.jena.fuseki.HttpNames.* ;
+import static org.apache.jena.fuseki.server.CounterName.QueryExecErrors ;
+import static org.apache.jena.fuseki.server.CounterName.QueryTimeouts ;
+import static org.apache.jena.fuseki.server.CounterName.RequestsBad ;
import java.io.IOException ;
import java.io.InputStream ;
@@ -31,10 +34,9 @@ import javax.servlet.http.HttpServletRes
import org.apache.jena.atlas.io.IO ;
import org.apache.jena.atlas.io.IndentedLineBuffer ;
import org.apache.jena.atlas.web.MediaType ;
-import org.apache.jena.fuseki.FusekiException ;
import org.apache.jena.fuseki.FusekiLib ;
+import org.apache.jena.fuseki.FusekiRequestException ;
import org.apache.jena.fuseki.HttpNames ;
-import static org.apache.jena.fuseki.server.CounterName.* ;
import org.apache.jena.riot.WebContent ;
import org.apache.jena.riot.web.HttpOp ;
import org.apache.jena.web.HttpSC ;
@@ -316,26 +318,29 @@ public abstract class SPARQL_Query exten
if (!(action.getDatasetRef().allowTimeoutOverride))
return;
- long desiredTimeout = Long.MAX_VALUE;
+ long desiredTimeout = action.getDatasetRef().defaultTimeout;
String timeoutHeader = action.request.getHeader("Timeout");
String timeoutParameter = action.request.getParameter("timeout");
if (timeoutHeader != null) {
try {
- desiredTimeout = (int) Float.parseFloat(timeoutHeader) * 1000;
+ desiredTimeout = (long) (Float.parseFloat(timeoutHeader) * 1000);
} catch (NumberFormatException e) {
- throw new FusekiException("Timeout header must be a number", e);
+ throw FusekiRequestException.create(HttpSC.BAD_REQUEST_400, "Timeout header must be a number");
}
- } else if (timeoutParameter != null) {
+ } else if (timeoutParameter != null && !timeoutParameter.equals("")) {
try {
- desiredTimeout = (int) Float.parseFloat(timeoutParameter) * 1000;
+ desiredTimeout = (long) (Float.parseFloat(timeoutParameter) * 1000);
} catch (NumberFormatException e) {
- throw new FusekiException("timeout parameter must be a number", e);
+ throw FusekiRequestException.create(HttpSC.BAD_REQUEST_400, "timeout parameter must be a number");
}
}
desiredTimeout = Math.min(action.getDatasetRef().maximumTimeoutOverride, desiredTimeout);
- if (desiredTimeout != Long.MAX_VALUE)
+ if (desiredTimeout != Long.MAX_VALUE) {
+ log.info(String.format("[%d] Setting timeout: %d ms", action.id, desiredTimeout));
+ action.timeout = desiredTimeout;
qexec.setTimeout(desiredTimeout);
+ }
}
protected abstract Dataset decideDataset(HttpAction action, Query query, String queryStringLog) ;
Modified: jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java?rev=1507774&r1=1507773&r2=1507774&view=diff
==============================================================================
--- jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java (original)
+++ jena/branches/jena-218/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java Sun Jul 28 10:04:30 2013
@@ -73,7 +73,7 @@ public abstract class SPARQL_ServletBase
execCommonWorker(action) ;
} catch (QueryCancelledException ex) {
// Also need the per query info ...
- String message = String.format("The query timed out (restricted to %s ms)", cxt.get(ARQ.queryTimeout));
+ String message = String.format("The query timed out (restricted to %s ms)", action.timeout);
// Possibility :: response.setHeader("Retry-after", "600") ; // 5 minutes
responseSendError(response, HttpSC.SERVICE_UNAVAILABLE_503, message);
} catch (ActionErrorException ex) {