summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2017-01-02 08:59:25 +0100
committerHarald Musum <musum@yahoo-inc.com>2017-01-02 08:59:25 +0100
commitfc830c33fcc65e70ebfba59b6ebf075f8629e5fb (patch)
treebe61da11b9feec098924cc84f55d7e8224762b9b /configserver
parent23af24b985632380e2376164e6c2a1ffc6dfc8b0 (diff)
Minor refactoring of handling of zookeeper barrier timeout
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java7
6 files changed, 18 insertions, 24 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
index a2249c03b69..bdd16b5f7ee 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
@@ -9,8 +9,6 @@ import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.deploy.DeployHandlerLogger;
import com.yahoo.vespa.config.server.TimeoutBudget;
-import com.yahoo.vespa.config.server.session.Session;
-import com.yahoo.vespa.config.server.session.SessionRepo;
import java.time.Clock;
import java.time.Duration;
@@ -68,8 +66,6 @@ public class SessionHandler extends HttpHandler {
request.getUri().toString() + "'");
}
- protected static final Duration DEFAULT_ACTIVATE_TIMEOUT = Duration.ofMinutes(2);
-
public static TimeoutBudget getTimeoutBudget(HttpRequest request, Duration defaultTimeout) {
return new TimeoutBudget(Clock.systemUTC(), getRequestTimeout(request, defaultTimeout));
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
index ad8b6e34e36..00e4007ab2d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
@@ -1,6 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
+import java.time.Duration;
import java.util.concurrent.Executor;
import com.google.inject.Inject;
@@ -26,6 +27,8 @@ import com.yahoo.vespa.config.server.http.Utils;
*/
public class SessionActiveHandler extends SessionHandler {
+ private static final Duration DEFAULT_ACTIVATE_TIMEOUT = Duration.ofMinutes(2);
+
private final Tenants tenants;
private final Zone zone;
@@ -45,7 +48,7 @@ public class SessionActiveHandler extends SessionHandler {
final TenantName tenantName = Utils.getTenantNameFromSessionRequest(request);
Utils.checkThatTenantExists(tenants, tenantName);
Tenant tenant = tenants.getTenant(tenantName);
- TimeoutBudget timeoutBudget = getTimeoutBudget(request, SessionHandler.DEFAULT_ACTIVATE_TIMEOUT);
+ TimeoutBudget timeoutBudget = getTimeoutBudget(request, DEFAULT_ACTIVATE_TIMEOUT);
final Long sessionId = getSessionIdV2(request);
ApplicationId applicationId = applicationRepository.activate(tenant, sessionId, timeoutBudget,
shouldIgnoreLockFailure(request),
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
index e33cf6dcda0..6dabc04cff2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
@@ -36,7 +36,7 @@ import java.util.concurrent.Executor;
public class SessionCreateHandler extends SessionHandler {
private final Tenants tenants;
private static final String fromPattern = "http://*/application/v2/tenant/*/application/*/environment/*/region/*/instance/*";
- private final ConfigserverConfig configserverConfig;
+ private final Duration zookeeperBarrierTimeout;
@Inject
public SessionCreateHandler(Executor executor,
@@ -46,7 +46,7 @@ public class SessionCreateHandler extends SessionHandler {
ApplicationRepository applicationRepository) {
super(executor, accessLog, applicationRepository);
this.tenants = tenants;
- this.configserverConfig = configserverConfig;
+ this.zookeeperBarrierTimeout = Duration.ofSeconds(configserverConfig.zookeeper().barrierTimeout());
}
@Override
@@ -57,7 +57,7 @@ public class SessionCreateHandler extends SessionHandler {
Tenant tenant = tenants.getTenant(tenantName);
final SessionCreate sessionCreate = new SessionCreate(tenant.getSessionFactory(), tenant.getLocalSessionRepo(),
new SessionCreateResponseV2(tenant, deployLog, deployLog.get()));
- TimeoutBudget timeoutBudget = SessionHandler.getTimeoutBudget(request, Duration.ofSeconds(configserverConfig.zookeeper().barrierTimeout()));
+ TimeoutBudget timeoutBudget = SessionHandler.getTimeoutBudget(request, zookeeperBarrierTimeout);
if (request.hasProperty("from")) {
LocalSession fromSession = getExistingSession(tenant, request);
return sessionCreate.createFromExisting(request, deployLog, fromSession, tenantName, timeoutBudget);
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
index 34e6371b213..639df1fbffb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
@@ -24,6 +24,7 @@ import com.yahoo.vespa.config.server.http.SessionHandler;
import com.yahoo.vespa.config.server.http.Utils;
import com.yahoo.vespa.config.server.session.*;
+import java.time.Duration;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.logging.Level;
@@ -41,7 +42,7 @@ public class SessionPrepareHandler extends SessionHandler {
private static final Logger log = Logger.getLogger(SessionPrepareHandler.class.getName());
private final Tenants tenants;
- private final ConfigserverConfig configserverConfig;
+ private final Duration zookeeperBarrierTimeout;
@Inject
public SessionPrepareHandler(Executor executor,
@@ -51,7 +52,7 @@ public class SessionPrepareHandler extends SessionHandler {
ApplicationRepository applicationRepository) {
super(executor, accessLog, applicationRepository);
this.tenants = tenants;
- this.configserverConfig = configserverConfig;
+ this.zookeeperBarrierTimeout = Duration.ofSeconds(configserverConfig.zookeeper().barrierTimeout());
}
@Override
@@ -64,12 +65,12 @@ public class SessionPrepareHandler extends SessionHandler {
log.log(LogLevel.DEBUG, "session=" + session);
boolean verbose = request.getBooleanProperty("verbose");
Slime rawDeployLog = createDeployLog();
- PrepareParams prepParams = PrepareParams.fromHttpRequest(request, tenantName, configserverConfig);
+ PrepareParams prepareParams = PrepareParams.fromHttpRequest(request, tenantName, zookeeperBarrierTimeout);
// An app id currently using only the name
- ApplicationId appId = prepParams.getApplicationId();
+ ApplicationId appId = prepareParams.getApplicationId();
DeployLogger logger = createLogger(rawDeployLog, verbose, appId);
ConfigChangeActions actions = session.prepare(logger,
- prepParams,
+ prepareParams,
getCurrentActiveApplicationSet(tenant, appId),
tenant.getPath());
logConfigChangeActions(actions, logger);
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
index e2e13528eca..dcbeaabde46 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
@@ -1,7 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Rotation;
import com.yahoo.config.provision.TenantName;
@@ -119,10 +118,10 @@ public final class PrepareParams {
}
- public static PrepareParams fromHttpRequest(HttpRequest request, TenantName tenant, ConfigserverConfig configserverConfig) {
+ public static PrepareParams fromHttpRequest(HttpRequest request, TenantName tenant, Duration barrierTimeout) {
return new PrepareParams.Builder().ignoreValidationErrors(request.getBooleanProperty(IGNORE_VALIDATION_PARAM_NAME))
.dryRun(request.getBooleanProperty(DRY_RUN_PARAM_NAME))
- .timeoutBudget(SessionHandler.getTimeoutBudget(request, getBarrierTimeout(configserverConfig)))
+ .timeoutBudget(SessionHandler.getTimeoutBudget(request, barrierTimeout))
.applicationId(createApplicationId(request, tenant))
.vespaVersion(request.getProperty(VESPA_VERSION_PARAM_NAME))
.rotations(request.getProperty(ROTATIONS_PARAM_NAME))
@@ -130,10 +129,6 @@ public final class PrepareParams {
.build();
}
- private static Duration getBarrierTimeout(ConfigserverConfig configserverConfig) {
- return Duration.ofSeconds(configserverConfig.zookeeper().barrierTimeout());
- }
-
private static ApplicationId createApplicationId(HttpRequest request, TenantName tenant) {
return new ApplicationId.Builder()
.tenant(tenant)
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
index 8ab57990bb2..d91fff41f2e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
@@ -1,7 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Rotation;
import com.yahoo.config.provision.TenantName;
@@ -10,6 +9,7 @@ import com.yahoo.container.jdisc.HttpRequest;
import org.junit.Test;
+import java.time.Duration;
import java.util.Optional;
import java.util.Set;
@@ -81,9 +81,8 @@ public class PrepareParamsTest {
// Create PrepareParams from a request (based on uri and tenant name)
private static PrepareParams createParams(String uri, TenantName tenantName) {
return PrepareParams.fromHttpRequest(
- HttpRequest.createTestRequest(uri,
- com.yahoo.jdisc.http.HttpRequest.Method.PUT),
+ HttpRequest.createTestRequest(uri, com.yahoo.jdisc.http.HttpRequest.Method.PUT),
tenantName,
- new ConfigserverConfig(new ConfigserverConfig.Builder()));
+ Duration.ofSeconds(60));
}
}