diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-10-27 09:33:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-27 09:33:51 +0200 |
commit | e046148b2e28e2d8bf261c356fa884f882f433e4 (patch) | |
tree | a52ba917d5fad5ec90a5d62494733bd713f43f4f | |
parent | 8e3174722f05a2ca0e5fb3acd08d7df786b2cee2 (diff) | |
parent | 65423fccc93479f5840d3787c922de5e3b91cfbe (diff) |
Merge pull request #3915 from vespa-engine/hmusum/use-already-existing-activate-lock
Use the already existing activate lock in tenant instance
10 files changed, 20 insertions, 50 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index e20f8ede534..13401d4a4a6 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -35,11 +35,9 @@ import com.yahoo.vespa.config.server.session.RemoteSession; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.config.server.session.SessionFactory; import com.yahoo.vespa.config.server.session.SilentDeployLogger; -import com.yahoo.vespa.config.server.tenant.ActivateLock; import com.yahoo.vespa.config.server.tenant.Rotations; import com.yahoo.vespa.config.server.tenant.Tenant; import com.yahoo.vespa.config.server.tenant.Tenants; -import com.yahoo.vespa.curator.Curator; import java.io.File; import java.net.URI; @@ -65,7 +63,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye private final Tenants tenants; private final Optional<Provisioner> hostProvisioner; - private final Curator curator; private final LogServerLogGrabber logServerLogGrabber; private final ApplicationConvergenceChecker convergeChecker; private final HttpProxy httpProxy; @@ -77,28 +74,25 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye @Inject public ApplicationRepository(Tenants tenants, HostProvisionerProvider hostProvisionerProvider, - Curator curator, LogServerLogGrabber logServerLogGrabber, ApplicationConvergenceChecker applicationConvergenceChecker, HttpProxy httpProxy, ConfigserverConfig configserverConfig) { - this(tenants, hostProvisionerProvider.getHostProvisioner(), curator, logServerLogGrabber, + this(tenants, hostProvisionerProvider.getHostProvisioner(), logServerLogGrabber, applicationConvergenceChecker, httpProxy, configserverConfig, Clock.systemUTC()); } // For testing public ApplicationRepository(Tenants tenants, Provisioner hostProvisioner, - Curator curator, Clock clock) { - this(tenants, Optional.of(hostProvisioner), curator, new LogServerLogGrabber(), + this(tenants, Optional.of(hostProvisioner), new LogServerLogGrabber(), new ApplicationConvergenceChecker(), new HttpProxy(new SimpleHttpFetcher()), new ConfigserverConfig(new ConfigserverConfig.Builder()), clock); } private ApplicationRepository(Tenants tenants, Optional<Provisioner> hostProvisioner, - Curator curator, LogServerLogGrabber logServerLogGrabber, ApplicationConvergenceChecker applicationConvergenceChecker, HttpProxy httpProxy, @@ -106,7 +100,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye Clock clock) { this.tenants = tenants; this.hostProvisioner = hostProvisioner; - this.curator = curator; this.logServerLogGrabber = logServerLogGrabber; this.convergeChecker = applicationConvergenceChecker; this.httpProxy = httpProxy; @@ -138,21 +131,20 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye return Optional.of(Deployment.unprepared(newSession, this, - tenant.getPath(), hostProvisioner, - new ActivateLock(curator, tenant.getPath()), + tenant, timeout, clock, false, // don't validate as this is already deployed version)); } - private Deployment deployFromPreparedSession(LocalSession session, ActivateLock lock, Duration timeout) { + private Deployment deployFromPreparedSession(LocalSession session, Tenant tenant, Duration timeout) { return Deployment.prepared(session, this, hostProvisioner, - lock, - timeout, + tenant, + timeout, clock); } @@ -274,11 +266,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye boolean ignoreLockFailure, boolean ignoreSessionStaleFailure) { LocalSession localSession = getLocalSession(tenant, sessionId); - ActivateLock activateLock = tenant.getActivateLock(); - // TODO: Get rid of the activateLock argument in deployFromPreparedSession - Deployment deployment = deployFromPreparedSession(localSession, - activateLock, - timeoutBudget.timeLeft()); + Deployment deployment = deployFromPreparedSession(localSession, tenant, timeoutBudget.timeLeft()); deployment.setIgnoreLockFailure(ignoreLockFailure); deployment.setIgnoreSessionStaleFailure(ignoreSessionStaleFailure); deployment.activate(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java index 7abea3393ff..c19ae86157a 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java @@ -6,11 +6,9 @@ import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.Provisioner; import com.yahoo.log.LogLevel; -import com.yahoo.path.Path; import com.yahoo.transaction.NestedTransaction; import com.yahoo.transaction.Transaction; import com.yahoo.vespa.config.server.ActivationConflictException; -import com.yahoo.vespa.config.server.tenant.ActivateLock; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.TimeoutBudget; import com.yahoo.vespa.config.server.http.InternalServerException; @@ -18,6 +16,8 @@ import com.yahoo.vespa.config.server.session.LocalSession; import com.yahoo.vespa.config.server.session.PrepareParams; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.config.server.session.SilentDeployLogger; +import com.yahoo.vespa.config.server.tenant.ActivateLock; +import com.yahoo.vespa.config.server.tenant.Tenant; import java.time.Clock; import java.time.Duration; @@ -39,10 +39,8 @@ public class Deployment implements com.yahoo.config.provision.Deployment { /** The session containing the application instance to activate */ private final LocalSession session; private final ApplicationRepository applicationRepository; - /** The path to the tenant, or null if not available (only used during prepare) */ - private final Path tenantPath; private final Optional<Provisioner> hostProvisioner; - private final ActivateLock activateLock; + private final Tenant tenant; private final Duration timeout; private final Clock clock; private final DeployLogger logger = new SilentDeployLogger(); @@ -58,14 +56,13 @@ public class Deployment implements com.yahoo.config.provision.Deployment { private boolean ignoreLockFailure = false; private boolean ignoreSessionStaleFailure = false; - private Deployment(LocalSession session, ApplicationRepository applicationRepository, Path tenantPath, - Optional<Provisioner> hostProvisioner, ActivateLock activateLock, + private Deployment(LocalSession session, ApplicationRepository applicationRepository, + Optional<Provisioner> hostProvisioner, Tenant tenant, Duration timeout, Clock clock, boolean prepared, boolean validate, Version version) { this.session = session; this.applicationRepository = applicationRepository; - this.tenantPath = tenantPath; this.hostProvisioner = hostProvisioner; - this.activateLock = activateLock; + this.tenant = tenant; this.timeout = timeout; this.clock = clock; this.prepared = prepared; @@ -73,17 +70,17 @@ public class Deployment implements com.yahoo.config.provision.Deployment { this.version = version; } - public static Deployment unprepared(LocalSession session, ApplicationRepository applicationRepository, Path tenantPath, - Optional<Provisioner> hostProvisioner, ActivateLock activateLock, + public static Deployment unprepared(LocalSession session, ApplicationRepository applicationRepository, + Optional<Provisioner> hostProvisioner, Tenant tenant, Duration timeout, Clock clock, boolean validate, Version version) { - return new Deployment(session, applicationRepository, tenantPath, hostProvisioner, activateLock, + return new Deployment(session, applicationRepository, hostProvisioner, tenant, timeout, clock, false, validate, version); } public static Deployment prepared(LocalSession session, ApplicationRepository applicationRepository, - Optional<Provisioner> hostProvisioner, ActivateLock activateLock, + Optional<Provisioner> hostProvisioner, Tenant tenant, Duration timeout, Clock clock) { - return new Deployment(session, applicationRepository, null, hostProvisioner, activateLock, + return new Deployment(session, applicationRepository, hostProvisioner, tenant, timeout, clock, true, true, session.getVespaVersion()); } @@ -110,7 +107,7 @@ public class Deployment implements com.yahoo.config.provision.Deployment { .vespaVersion(version.toString()) .build(), Optional.empty(), - tenantPath, + tenant.getPath(), clock.instant()); this.prepared = true; } @@ -124,6 +121,7 @@ public class Deployment implements com.yahoo.config.provision.Deployment { TimeoutBudget timeoutBudget = new TimeoutBudget(clock, timeout); long sessionId = session.getSessionId(); validateSessionStatus(session); + ActivateLock activateLock = tenant.getActivateLock(); try { log.log(LogLevel.DEBUG, "Trying to acquire lock " + activateLock + " for session " + sessionId); boolean acquired = activateLock.acquire(timeoutBudget, ignoreLockFailure); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java index 36de7d0221a..88d7177a51e 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java @@ -7,15 +7,10 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.TenantName; import com.yahoo.io.IOUtils; -import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; -import com.yahoo.vespa.config.server.application.HttpProxy; -import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.deploy.MockDeployer; import com.yahoo.vespa.config.server.host.HostRegistries; import com.yahoo.vespa.config.server.http.SessionHandlerTest; -import com.yahoo.vespa.config.server.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.monitoring.Metrics; -import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.rpc.UncompressedConfigResponseFactory; import com.yahoo.vespa.config.server.tenant.Tenant; import com.yahoo.vespa.config.server.tenant.TenantRequestHandler; @@ -58,7 +53,6 @@ public class ConfigServerBootstrapTest extends TestWithTenant { applicationRepository = new ApplicationRepository(tenants, new SessionHandlerTest.MockProvisioner(), - curator, Clock.systemUTC()); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java index 7a9bbade986..64932700173 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java @@ -110,7 +110,6 @@ public class DeployTester { } applicationRepository = new ApplicationRepository(tenants, createHostProvisioner(), - curator, clock); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java index 43e974270a0..a17d485a425 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java @@ -12,7 +12,6 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.http.ContentHandlerTestBase; import com.yahoo.vespa.config.server.session.Session; -import com.yahoo.vespa.curator.mock.MockCurator; import org.junit.Before; import org.junit.Test; @@ -58,7 +57,6 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase { Zone.defaultZone(), new ApplicationRepository(testTenantBuilder.createTenants(), new MockProvisioner(), - new MockCurator(), Clock.systemUTC())); pathPrefix = createPath(idTenant1, Zone.defaultZone()); baseUrl = baseServer + pathPrefix; diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java index 737d8aaa74b..afe51adee20 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java @@ -113,7 +113,6 @@ public class ApplicationHandlerTest { Zone.defaultZone(), new ApplicationRepository(tenants, HostProvisionerProvider.withProvisioner(provisioner), - new MockCurator(), logServerLogGrabber, convergeChecker, httpProxy, @@ -127,7 +126,6 @@ public class ApplicationHandlerTest { Zone.defaultZone(), new ApplicationRepository(tenants, HostProvisionerProvider.withProvisioner(provisioner), - new MockCurator(), new LogServerLogGrabber(), new ApplicationConvergenceChecker(stateApiFactory), new HttpProxy(new SimpleHttpFetcher()), diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java index 9ea5debe355..a52fd82b44b 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java @@ -379,7 +379,6 @@ public class SessionActiveHandlerTest extends SessionHandlerTest { Zone.defaultZone(), new ApplicationRepository(testTenantBuilder.createTenants(), hostProvisioner, - curator, Clock.systemUTC())); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java index 26a35b1e195..1d831032416 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java @@ -12,7 +12,6 @@ import com.yahoo.text.Utf8; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.http.ContentHandlerTestBase; import com.yahoo.vespa.config.server.http.SessionHandlerTest; -import com.yahoo.vespa.curator.mock.MockCurator; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Ignore; @@ -171,7 +170,6 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase { }, AccessLog.voidAccessLog(), testTenantBuilder.createTenants(), new ApplicationRepository(testTenantBuilder.createTenants(), new SessionHandlerTest.MockProvisioner(), - new MockCurator(), Clock.systemUTC())); } } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java index 08c4d8c5c55..7fe7b350734 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java @@ -238,7 +238,6 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { return new SessionCreateHandler(Runnable::run, AccessLog.voidAccessLog(), tenants, configserverConfig, new ApplicationRepository(testTenantBuilder.createTenants(), new SessionHandlerTest.MockProvisioner(), - new MockCurator(), Clock.systemUTC())); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java index 58cbe6942bb..428cd16508f 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java @@ -375,7 +375,6 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { return new SessionPrepareHandler(Runnable::run, AccessLog.voidAccessLog(), builder.createTenants(), configserverConfig, new ApplicationRepository(builder.createTenants(), new MockProvisioner(), - curator, Clock.systemUTC())); } |