diff options
author | Harald Musum <musum@yahoo-inc.com> | 2016-07-07 19:05:13 +0200 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2016-07-07 19:05:13 +0200 |
commit | 815c6dce4e5ed52fc1dd5eabce721ce1ae49ee89 (patch) | |
tree | ebda55263b54949604acd4f9bb1a87d613b12037 /container-core/src/main/java/com/yahoo/container/jdisc | |
parent | 17f497e0b727415ff92d309073c784bceb7597d7 (diff) |
Provide method for overriding timeout for handler
VESPA-3979
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/jdisc')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java index d54177a91e8..5cabe8a9ec6 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java @@ -15,6 +15,7 @@ import com.yahoo.jdisc.handler.ResponseDispatch; import com.yahoo.jdisc.handler.ResponseHandler; import com.yahoo.log.LogLevel; +import java.time.Duration; import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; @@ -37,7 +38,7 @@ import javax.annotation.concurrent.GuardedBy; public abstract class ThreadedRequestHandler extends AbstractRequestHandler { private static final Logger log = Logger.getLogger(ThreadedRequestHandler.class.getName()); - private static final int TIMEOUT = Integer.parseInt(System.getProperty("ThreadedRequestHandler.timeout", "300")); + private static final Duration TIMEOUT = Duration.ofSeconds(Integer.parseInt(System.getProperty("ThreadedRequestHandler.timeout", "300"))); private final Executor executor; protected final Metric metric; private final boolean allowAsyncResponse; @@ -81,7 +82,12 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler { */ @Override public final ContentChannel handleRequest(Request request, ResponseHandler responseHandler) { - request.setTimeout(TIMEOUT, TimeUnit.SECONDS); + if (request.getTimeout(TimeUnit.SECONDS) == null) { + Duration timeout = getTimeout(); + if (timeout != null) { + request.setTimeout(timeout.getSeconds(), TimeUnit.SECONDS); + } + } BufferedContentChannel content = new BufferedContentChannel(); final RequestTask command = new RequestTask(request, content, responseHandler); try { @@ -95,6 +101,10 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler { return content; } + public Duration getTimeout() { + return TIMEOUT; + } + private void logRejectedRequests() { if (numRejectedRequests == 0) { return; |