diff options
author | Harald Musum <musum@yahoo-inc.com> | 2017-01-02 08:59:25 +0100 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2017-01-02 08:59:25 +0100 |
commit | fc830c33fcc65e70ebfba59b6ebf075f8629e5fb (patch) | |
tree | be61da11b9feec098924cc84f55d7e8224762b9b /configserver | |
parent | 23af24b985632380e2376164e6c2a1ffc6dfc8b0 (diff) |
Minor refactoring of handling of zookeeper barrier timeout
Diffstat (limited to 'configserver')
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)); } } |