summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-10-23 23:03:38 +0200
committerGitHub <noreply@github.com>2019-10-23 23:03:38 +0200
commite6b5bbe7b1a2cddd447a8fb2f402d8373bdba17c (patch)
treecebffc8eaee428e10d759cb4f19dd4453e6c05da
parent850d23293609c4ced8d1200a1d35346ec342b6e2 (diff)
parentd90435f06ea38f3b0da87e5d2d7e6c3af80abd63 (diff)
Merge pull request #11062 from vespa-engine/hmusum/use-timeout-value-from-request
Use the actual timeout value in request
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java27
1 files changed, 14 insertions, 13 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
index 1748e3be64f..e19903ddeda 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
@@ -77,20 +77,20 @@ public class JRTConfigRequester implements RequestWaiter {
*/
public <T extends ConfigInstance> void request(JRTConfigSubscription<T> sub) {
JRTClientConfigRequest req = JRTConfigRequestFactory.createFromSub(sub);
- doRequest(sub, req, timingValues.getSubscribeTimeout());
+ doRequest(sub, req);
}
- private <T extends ConfigInstance> void doRequest(JRTConfigSubscription<T> sub, JRTClientConfigRequest req, long timeout) {
- com.yahoo.vespa.config.Connection connection = connectionPool.getCurrent();
+ private <T extends ConfigInstance> void doRequest(JRTConfigSubscription<T> sub, JRTClientConfigRequest req) {
+ Connection connection = connectionPool.getCurrent();
req.getRequest().setContext(new RequestContext(sub, req, connection));
- boolean reqOK = req.validateParameters();
- if (!reqOK) throw new ConfigurationRuntimeException("Error in parameters for config request: " + req);
- // Add some time to the timeout, we never want it to time out in JRT during normal operation
- double jrtClientTimeout = getClientTimeout(timeout);
- log.log(LogLevel.DEBUG, () -> "Requesting config for " + sub + " on connection " + connection
- + " with RPC timeout " + jrtClientTimeout +
- (log.isLoggable(LogLevel.SPAM) ? (",defcontent=" + req.getDefContent().asString()) : ""));
+ if ( ! req.validateParameters()) throw new ConfigurationRuntimeException("Error in parameters for config request: " + req);
+ double jrtClientTimeout = getClientTimeout(req);
+ if (log.isLoggable(LogLevel.DEBUG)) {
+ log.log(LogLevel.DEBUG, "Requesting config for " + sub + " on connection " + connection
+ + " with client timeout " + jrtClientTimeout +
+ (log.isLoggable(LogLevel.SPAM) ? (",defcontent=" + req.getDefContent().asString()) : ""));
+ }
connection.invokeAsync(req.getRequest(), jrtClientTimeout, this);
}
@@ -174,6 +174,7 @@ public class JRTConfigRequester implements RequestWaiter {
delay = timingValues.getConfiguredErrorDelay();
else
delay = timingValues.getUnconfiguredDelay();
+
if (errorCode == ErrorType.TRANSIENT) {
delay = delay * Math.min((transientFailures + 1), timingValues.getMaxDelayMultiplier());
} else {
@@ -274,7 +275,7 @@ public class JRTConfigRequester implements RequestWaiter {
}
public void run() {
- doRequest(sub, jrtReq, jrtReq.getTimeout());
+ doRequest(sub, jrtReq);
}
}
@@ -323,7 +324,7 @@ public class JRTConfigRequester implements RequestWaiter {
return connectionPool;
}
- private Double getClientTimeout(long serverTimeout) {
- return (serverTimeout / 1000.0) + additionalTimeForClientTimeout;
+ private Double getClientTimeout(JRTClientConfigRequest request) {
+ return (request.getTimeout() / 1000.0) + additionalTimeForClientTimeout;
}
}