aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2017-10-27 09:14:39 +0200
committerHarald Musum <musum@oath.com>2017-10-27 09:14:39 +0200
commit65423fccc93479f5840d3787c922de5e3b91cfbe (patch)
treea52ba917d5fad5ec90a5d62494733bd713f43f4f
parent8e3174722f05a2ca0e5fb3acd08d7df786b2cee2 (diff)
Use the already existing activate lock in tenant instance
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java26
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java28
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java1
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java1
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java1
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java1
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()));
}