summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-08-19 10:12:32 +0200
committerGitHub <noreply@github.com>2020-08-19 10:12:32 +0200
commitec906d21cbbcc913a26f6b871e02fd5ab6c09c01 (patch)
treee81de1d0b616fed79aac12b53790aa5b4d902408
parent9a178a0ff6d77704afb1c8d0e2848a764e89e01c (diff)
parentb78c761374dc987984517caffd83c6da7e3e47b2 (diff)
Merge pull request #14093 from vespa-engine/hmusum/configserver-refactoring-27
Config server refactoring, part 27
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java40
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java27
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java13
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java28
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java7
-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/session/MockSessionZKClient.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java6
18 files changed, 94 insertions, 87 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 eb268546580..b8508922b78 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
@@ -63,6 +63,7 @@ import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.Lock;
+import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.orchestrator.Orchestrator;
import java.io.File;
@@ -90,6 +91,7 @@ import java.util.stream.Collectors;
import static com.yahoo.config.model.api.container.ContainerServiceType.CLUSTERCONTROLLER_CONTAINER;
import static com.yahoo.config.model.api.container.ContainerServiceType.CONTAINER;
import static com.yahoo.config.model.api.container.ContainerServiceType.LOGSERVER_CONTAINER;
+import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk;
import static com.yahoo.vespa.curator.Curator.CompletionWaiter;
import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.getFileReferencesOnDisk;
import static com.yahoo.vespa.config.server.tenant.TenantRepository.HOSTED_VESPA_TENANT;
@@ -252,7 +254,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
boolean ignoreSessionStaleFailure, Instant now) {
ApplicationId applicationId = prepareParams.getApplicationId();
long sessionId = createSession(applicationId, prepareParams.getTimeoutBudget(), applicationPackage);
- Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant tenant = getTenant(applicationId);
PrepareResult result = prepare(tenant, sessionId, prepareParams, now);
activate(tenant, sessionId, prepareParams.getTimeoutBudget(), ignoreSessionStaleFailure);
return result;
@@ -379,10 +381,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
}
- private static boolean isValidSession(Session session) {
- return session != null;
- }
-
// As of now, config generation is based on session id, and config generation must be a monotonically
// increasing number
static void checkIfActiveIsNewerThanSessionToBeActivated(long sessionId, long currentActiveSessionId) {
@@ -412,7 +410,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
* @throws RuntimeException if the delete transaction fails. This method is exception safe.
*/
public boolean delete(ApplicationId applicationId, Duration waitTime) {
- Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant tenant = getTenant(applicationId);
if (tenant == null) return false;
TenantApplications tenantApplications = tenant.getApplicationRepo();
@@ -586,7 +584,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
private boolean localSessionHasBeenDeleted(ApplicationId applicationId, long sessionId, Duration waitTime) {
- SessionRepository sessionRepository = tenantRepository.getTenant(applicationId.tenant()).getSessionRepository();
+ SessionRepository sessionRepository = getTenant(applicationId).getSessionRepository();
Instant end = Instant.now().plus(waitTime);
do {
if (sessionRepository.getRemoteSession(sessionId) == null) return true;
@@ -596,6 +594,26 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return false;
}
+ public Optional<String> getApplicationPackageReference(ApplicationId applicationId) {
+ Optional<String> applicationPackage = Optional.empty();
+ RemoteSession session = getActiveSession(applicationId);
+ if (session != null) {
+ FileReference applicationPackageReference = session.getApplicationPackageReference();
+ File downloadDirectory = new File(Defaults.getDefaults().underVespaHome(configserverConfig().fileReferencesDir()));
+ if (applicationPackageReference != null && ! fileReferenceExistsOnDisk(downloadDirectory, applicationPackageReference))
+ applicationPackage = Optional.of(applicationPackageReference.value());
+ }
+ return applicationPackage;
+ }
+
+ public List<Version> getAllVersions(ApplicationId applicationId) {
+ Optional<ApplicationSet> applicationSet = getCurrentActiveApplicationSet(getTenant(applicationId), applicationId);
+ if (applicationSet.isEmpty())
+ return List.of();
+ else
+ return applicationSet.get().getAllVersions(applicationId);
+ }
+
// ---------------- Convergence ----------------------------------------------------------------
public HttpResponse checkServiceForConfigConvergence(ApplicationId applicationId, String hostAndPort, URI uri,
@@ -671,11 +689,11 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
* @return the active session, or null if there is no active session for the given application id.
*/
public RemoteSession getActiveSession(ApplicationId applicationId) {
- return getActiveSession(tenantRepository.getTenant(applicationId.tenant()), applicationId);
+ return getActiveSession(getTenant(applicationId), applicationId);
}
public long getSessionIdForApplication(ApplicationId applicationId) {
- Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant tenant = getTenant(applicationId);
if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found");
return getSessionIdForApplication(tenant, applicationId);
}
@@ -704,7 +722,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
DeployLogger logger,
boolean internalRedeploy,
TimeoutBudget timeoutBudget) {
- Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant tenant = getTenant(applicationId);
SessionRepository sessionRepository = tenant.getSessionRepository();
RemoteSession fromSession = getExistingSession(tenant, applicationId);
LocalSession session = sessionRepository.createSessionFromExisting(fromSession, logger, internalRedeploy, timeoutBudget);
@@ -724,7 +742,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
public long createSession(ApplicationId applicationId, TimeoutBudget timeoutBudget, File applicationDirectory) {
- Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant tenant = getTenant(applicationId);
tenant.getApplicationRepo().createApplication(applicationId);
Optional<Long> activeSessionId = tenant.getApplicationRepo().activeSessionOf(applicationId);
LocalSession session = tenant.getSessionRepository().createSession(applicationDirectory,
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
index 5ce9ebca69d..c0158b55422 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
@@ -57,7 +57,7 @@ public final class ApplicationMapper {
/** Returns whether this registry has an application for the given application id */
public boolean hasApplication(ApplicationId applicationId, Instant now) {
- return hasApplicationForVersion(applicationId, Optional.<Version>empty(), now);
+ return hasApplicationForVersion(applicationId, Optional.empty(), now);
}
/** Returns whether this registry has an application for the given application id and vespa version */
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
index d87a37829de..fe22c537a01 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
@@ -420,4 +420,5 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica
}
public TenantFileSystemDirs getTenantFileSystemDirs() { return tenantFileSystemDirs; }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index 8426d6b56cf..0a805cc6b21 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
import com.yahoo.component.Version;
-import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
@@ -18,18 +17,13 @@ import com.yahoo.jdisc.application.BindingMatch;
import com.yahoo.jdisc.application.UriPattern;
import com.yahoo.slime.Cursor;
import com.yahoo.vespa.config.server.ApplicationRepository;
-import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.http.ContentHandler;
import com.yahoo.vespa.config.server.http.ContentRequest;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.HttpHandler;
import com.yahoo.vespa.config.server.http.JSONResponse;
import com.yahoo.vespa.config.server.http.NotFoundException;
-import com.yahoo.vespa.config.server.session.RemoteSession;
-import com.yahoo.vespa.config.server.tenant.Tenant;
-import com.yahoo.vespa.defaults.Defaults;
-import java.io.File;
import java.io.IOException;
import java.time.Duration;
import java.util.List;
@@ -38,8 +32,6 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk;
-
/**
* Operations on applications (delete, wait for config convergence, restart, application content etc.)
*
@@ -169,21 +161,10 @@ public class ApplicationHandler extends HttpHandler {
}
GetApplicationResponse getApplicationResponse(ApplicationId applicationId) {
- Tenant tenant = applicationRepository.getTenant(applicationId);
- Optional<ApplicationSet> applicationSet = applicationRepository.getCurrentActiveApplicationSet(tenant, applicationId);
- String applicationPackage = "";
- RemoteSession session = applicationRepository.getActiveSession(applicationId);
- if (session != null) {
- FileReference applicationPackageReference = session.getApplicationPackageReference();
- File downloadDirectory = new File(Defaults.getDefaults().underVespaHome(applicationRepository.configserverConfig().fileReferencesDir()));
- if (applicationPackageReference != null && ! fileReferenceExistsOnDisk(downloadDirectory, applicationPackageReference))
- applicationPackage = applicationPackageReference.value();
- }
-
return new GetApplicationResponse(Response.Status.OK,
applicationRepository.getApplicationGeneration(applicationId),
- applicationSet.get().getAllVersions(applicationId),
- applicationPackage);
+ applicationRepository.getAllVersions(applicationId),
+ applicationRepository.getApplicationPackageReference(applicationId));
}
@Override
@@ -346,10 +327,10 @@ public class ApplicationHandler extends HttpHandler {
}
private static class GetApplicationResponse extends JSONResponse {
- GetApplicationResponse(int status, long generation, List<Version> modelVersions, String applicationPackageReference) {
+ GetApplicationResponse(int status, long generation, List<Version> modelVersions, Optional<String> applicationPackageReference) {
super(status);
object.setLong("generation", generation);
- object.setString("applicationPackageFileReference", applicationPackageReference);
+ object.setString("applicationPackageFileReference", applicationPackageReference.orElse(""));
Cursor modelVersionArray = object.setArray("modelVersions");
modelVersions.forEach(version -> modelVersionArray.addString(version.toFullString()));
}
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 124902c988a..4e75234620f 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
@@ -45,7 +45,7 @@ public class SessionActiveHandler extends SessionHandler {
Utils.checkThatTenantExists(tenantRepository, tenantName);
Tenant tenant = tenantRepository.getTenant(tenantName);
TimeoutBudget timeoutBudget = getTimeoutBudget(request, DEFAULT_ACTIVATE_TIMEOUT);
- final Long sessionId = getSessionIdV2(request);
+ long sessionId = getSessionIdV2(request);
ApplicationId applicationId = applicationRepository.activate(tenant, sessionId, timeoutBudget,
shouldIgnoreSessionStaleFailure(request));
ApplicationMetaData metaData = applicationRepository.getMetadataFromLocalSession(tenant, sessionId);
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
index e9687000b3c..e41d5264c08 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
@@ -89,7 +89,7 @@ public class ApplicationPackageMaintainer extends ConfigServerMaintainer {
}
private void createLocalSessionIfMissing(ApplicationId applicationId, long sessionId) {
- Tenant tenant = applicationRepository.tenantRepository().getTenant(applicationId.tenant());
+ Tenant tenant = applicationRepository.getTenant(applicationId);
SessionRepository sessionRepository = tenant.getSessionRepository();
if (sessionRepository.getLocalSession(sessionId) == null)
sessionRepository.createLocalSessionUsingDistributedApplicationPackage(sessionId);
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
index 0fc85b5e51a..d401669b8d6 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
@@ -34,21 +34,22 @@ public abstract class Session implements Comparable<Session> {
protected final Optional<ApplicationPackage> applicationPackage;
protected Session(TenantName tenant, long sessionId, SessionZooKeeperClient sessionZooKeeperClient) {
- this.tenant = tenant;
- this.sessionId = sessionId;
- this.sessionZooKeeperClient = sessionZooKeeperClient;
- this.applicationPackage = Optional.empty();
+ this(tenant, sessionId, sessionZooKeeperClient, Optional.empty());
}
protected Session(TenantName tenant, long sessionId, SessionZooKeeperClient sessionZooKeeperClient,
ApplicationPackage applicationPackage) {
+ this(tenant, sessionId, sessionZooKeeperClient, Optional.of(applicationPackage));
+ }
+
+ private Session(TenantName tenant, long sessionId, SessionZooKeeperClient sessionZooKeeperClient,
+ Optional<ApplicationPackage> applicationPackage) {
this.tenant = tenant;
this.sessionId = sessionId;
this.sessionZooKeeperClient = sessionZooKeeperClient;
- this.applicationPackage = Optional.of(applicationPackage);
+ this.applicationPackage = applicationPackage;
}
-
public final long getSessionId() {
return sessionId;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index 9e39322c4b1..80fa972a4d2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -51,12 +51,6 @@ public class SessionZooKeeperClient {
private final Path sessionStatusPath;
private final String serverId; // hostname
- // Only for testing
- // TODO: Remove, use the constructor below
- public SessionZooKeeperClient(Curator curator, Path sessionPath) {
- this(curator, ConfigCurator.create(curator), sessionPath, "1");
- }
-
public SessionZooKeeperClient(Curator curator,
ConfigCurator configCurator,
Path sessionPath,
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index e42fb78f595..99530041088 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -157,8 +157,7 @@ public class ApplicationRepositoryTest {
assertTrue(result.configChangeActions().getRefeedActions().isEmpty());
assertTrue(result.configChangeActions().getRestartActions().isEmpty());
- TenantName tenantName = applicationId().tenant();
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
LocalSession session = tenant.getSessionRepository().getLocalSession(tenant.getApplicationRepo()
.requireActiveSessionOf(applicationId()));
session.getAllocatedHosts();
@@ -189,8 +188,7 @@ public class ApplicationRepositoryTest {
long secondSessionId = result2.sessionId();
assertNotEquals(firstSessionId, secondSessionId);
- TenantName tenantName = applicationId().tenant();
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
LocalSession session = tenant.getSessionRepository().getLocalSession(
tenant.getApplicationRepo().requireActiveSessionOf(applicationId()));
assertEquals(firstSessionId, session.getMetaData().getPreviousActiveGeneration());
@@ -273,8 +271,7 @@ public class ApplicationRepositoryTest {
@Test
public void delete() {
- TenantName tenantName = applicationId().tenant();
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
SessionRepository sessionRepository = tenant.getSessionRepository();
{
PrepareResult result = deployApp(testApp);
@@ -424,7 +421,7 @@ public class ApplicationRepositoryTest {
@Test
public void deletesApplicationRoles() {
- var tenant = tenantRepository.getTenant(tenant1);
+ var tenant = applicationRepository.getTenant(applicationId());
var applicationId = applicationId(tenant1);
var prepareParams = new PrepareParams.Builder().applicationId(applicationId)
.applicationRoles(ApplicationRoles.fromString("hostRole","containerRole")).build();
@@ -447,8 +444,7 @@ public class ApplicationRepositoryTest {
public void require_that_provision_info_can_be_read() {
prepareAndActivate(testAppJdiscOnly);
- TenantName tenantName = applicationId().tenant();
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
LocalSession session = tenant.getSessionRepository().getLocalSession(tenant.getApplicationRepo().requireActiveSessionOf(applicationId()));
List<NetworkPorts.Allocation> list = new ArrayList<>();
@@ -494,7 +490,7 @@ public class ApplicationRepositoryTest {
long sessionId = applicationRepository.createSession(applicationId(), timeoutBudget, testAppJdiscOnly);
exceptionRule.expect(IllegalStateException.class);
exceptionRule.expectMessage(containsString("tenant:test1 Session 3 is not prepared"));
- applicationRepository.activate(tenantRepository.getTenant(tenant1), sessionId, timeoutBudget, false);
+ applicationRepository.activate(applicationRepository.getTenant(applicationId()), sessionId, timeoutBudget, false);
RemoteSession activeSession = applicationRepository.getActiveSession(applicationId());
assertEquals(firstSession, activeSession.getSessionId());
@@ -508,10 +504,10 @@ public class ApplicationRepositoryTest {
long firstSession = result.sessionId();
long sessionId = applicationRepository.createSession(applicationId(), timeoutBudget, testAppJdiscOnly);
- applicationRepository.prepare(tenantRepository.getTenant(tenant1), sessionId, prepareParams(), clock.instant());
+ applicationRepository.prepare(applicationRepository.getTenant(applicationId()), sessionId, prepareParams(), clock.instant());
exceptionRule.expect(RuntimeException.class);
exceptionRule.expectMessage(containsString("Timeout exceeded when trying to activate 'test1.testapp'"));
- applicationRepository.activate(tenantRepository.getTenant(tenant1), sessionId, new TimeoutBudget(clock, Duration.ofSeconds(0)), false);
+ applicationRepository.activate(applicationRepository.getTenant(applicationId()), sessionId, new TimeoutBudget(clock, Duration.ofSeconds(0)), false);
RemoteSession activeSession = applicationRepository.getActiveSession(applicationId());
assertEquals(firstSession, activeSession.getSessionId());
@@ -533,10 +529,10 @@ public class ApplicationRepositoryTest {
PrepareResult result2 = deployApp(testAppJdiscOnly);
result2.sessionId();
- applicationRepository.prepare(tenantRepository.getTenant(tenant1), sessionId2, prepareParams(), clock.instant());
+ applicationRepository.prepare(applicationRepository.getTenant(applicationId()), sessionId2, prepareParams(), clock.instant());
exceptionRule.expect(ActivationConflictException.class);
exceptionRule.expectMessage(containsString("tenant:test1 app:testapp:default Cannot activate session 3 because the currently active session (4) has changed since session 3 was created (was 2 at creation time)"));
- applicationRepository.activate(tenantRepository.getTenant(tenant1), sessionId2, timeoutBudget, false);
+ applicationRepository.activate(applicationRepository.getTenant(applicationId()), sessionId2, timeoutBudget, false);
}
@Test
@@ -546,11 +542,11 @@ public class ApplicationRepositoryTest {
exceptionRule.expect(IllegalStateException.class);
exceptionRule.expectMessage(containsString("Session is active: 2"));
- applicationRepository.prepare(tenantRepository.getTenant(tenant1), sessionId, prepareParams(), clock.instant());
+ applicationRepository.prepare(applicationRepository.getTenant(applicationId()), sessionId, prepareParams(), clock.instant());
exceptionRule.expect(IllegalStateException.class);
exceptionRule.expectMessage(containsString("tenant:test1 app:testapp:default Session 2 is already active"));
- applicationRepository.activate(tenantRepository.getTenant(tenant1), sessionId, timeoutBudget, false);
+ applicationRepository.activate(applicationRepository.getTenant(applicationId()), sessionId, timeoutBudget, false);
}
@Test
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 8bf5215a696..0db6aea312d 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
@@ -45,13 +45,12 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
private final ApplicationId appId1 = new ApplicationId.Builder().tenant(tenantName1).applicationName("foo").instanceName("quux").build();
private final ApplicationId appId2 = new ApplicationId.Builder().tenant(tenantName2).applicationName("foo").instanceName("quux").build();
- private TenantRepository tenantRepository;
private ApplicationRepository applicationRepository;
private ApplicationHandler handler;
@Before
public void setupHandler() {
- tenantRepository = new TenantRepository(componentRegistry, false);
+ TenantRepository tenantRepository = new TenantRepository(componentRegistry, false);
tenantRepository.addTenant(tenantName1);
tenantRepository.addTenant(tenantName2);
@@ -106,7 +105,7 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
@Test
public void require_that_get_does_not_set_write_flag() throws IOException {
- Tenant tenant1 = tenantRepository.getTenant(tenantName1);
+ Tenant tenant1 = applicationRepository.getTenant(appId1);
LocalSession session = applicationRepository.getActiveLocalSession(tenant1, appId1);
assertContent("/test.txt", "foo\n");
assertThat(session.getStatus(), is(Session.Status.ACTIVATE));
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 1a558f89284..b6a96d680ec 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,7 @@ public class ApplicationHandlerTest {
{
applicationRepository.deploy(testApp, prepareParams(applicationId));
- Tenant mytenant = tenantRepository.getTenant(applicationId.tenant());
+ Tenant mytenant = applicationRepository.getTenant(applicationId);
deleteAndAssertOKResponse(mytenant, applicationId);
}
@@ -301,9 +301,10 @@ public class ApplicationHandlerTest {
}
private void deleteAndAssertOKResponseMocked(ApplicationId applicationId, boolean fullAppIdInUrl) throws IOException {
- long sessionId = tenantRepository.getTenant(applicationId.tenant()).getApplicationRepo().requireActiveSessionOf(applicationId);
+ Tenant tenant = applicationRepository.getTenant(applicationId);
+ long sessionId = tenant.getApplicationRepo().requireActiveSessionOf(applicationId);
deleteAndAssertResponse(applicationId, Zone.defaultZone(), Response.Status.OK, null, fullAppIdInUrl);
- assertNull(tenantRepository.getTenant(applicationId.tenant()).getSessionRepository().getLocalSession(sessionId));
+ assertNull(tenant.getSessionRepository().getLocalSession(sessionId));
}
private void deleteAndAssertOKResponse(Tenant tenant, ApplicationId applicationId) throws IOException {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
index 364e7372e20..5bf5e1f2229 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
@@ -39,7 +39,6 @@ public class HostHandlerTest {
private HostHandler handler;
private final static TenantName mytenant = TenantName.from("mytenant");
private final static Zone zone = Zone.defaultZone();
- private TenantRepository tenantRepository;
private ApplicationRepository applicationRepository;
@Before
@@ -47,7 +46,7 @@ public class HostHandlerTest {
TestComponentRegistry componentRegistry = new TestComponentRegistry.Builder()
.zone(zone)
.build();
- tenantRepository = new TenantRepository(componentRegistry);
+ TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(mytenant);
applicationRepository = new ApplicationRepository(tenantRepository,
new SessionHandlerTest.MockProvisioner(),
@@ -60,7 +59,7 @@ public class HostHandlerTest {
public void require_correct_tenant_and_application_for_hostname() throws Exception {
ApplicationId applicationId = applicationId();
applicationRepository.deploy(testApp, new PrepareParams.Builder().applicationId(applicationId).build());
- Tenant tenant = tenantRepository.getTenant(mytenant);
+ Tenant tenant = applicationRepository.getTenant(applicationId);
String hostname = applicationRepository.getCurrentActiveApplicationSet(tenant, applicationId).get().getAllHosts().iterator().next();
assertApplicationForHost(hostname, applicationId);
}
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 53422df3fad..e48752afaf6 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
@@ -58,7 +58,6 @@ public class SessionActiveHandlerTest {
private SessionHandlerTest.MockProvisioner hostProvisioner;
private TestComponentRegistry componentRegistry;
- private TenantRepository tenantRepository;
private ApplicationRepository applicationRepository;
private SessionActiveHandler handler;
@@ -73,10 +72,10 @@ public class SessionActiveHandlerTest {
.curator(new MockCurator())
.modelFactoryRegistry(new ModelFactoryRegistry(List.of((modelFactory))))
.build();
- tenantRepository = new TenantRepository(componentRegistry, false);
+ TenantRepository tenantRepository = new TenantRepository(componentRegistry, false);
+ tenantRepository.addTenant(tenantName);
applicationRepository = new ApplicationRepository(tenantRepository, hostProvisioner,
new OrchestratorMock(), componentRegistry.getClock());
- tenantRepository.addTenant(tenantName);
handler = createHandler();
}
@@ -124,7 +123,7 @@ public class SessionActiveHandlerTest {
ApplicationMetaData getMetaData() { return metaData; }
void invoke() {
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
long sessionId = applicationRepository.createSession(applicationId(),
new TimeoutBudget(componentRegistry.getClock(), Duration.ofSeconds(10)),
testApp);
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 3ab56d3869a..cda62361256 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
@@ -54,7 +54,7 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase {
new OrchestratorMock(),
Clock.systemUTC());
applicationRepository.deploy(testApp, new PrepareParams.Builder().applicationId(applicationId()).build());
- Tenant tenant = tenantRepository.getTenant(tenantName);
+ Tenant tenant = applicationRepository.getTenant(applicationId());
sessionId = applicationRepository.getActiveLocalSession(tenant, applicationId()).getSessionId();
handler = createHandler();
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java
index 692510b8b6d..296fbf56b3d 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java
@@ -6,6 +6,8 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.TenantName;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
+import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import java.util.Optional;
@@ -30,7 +32,10 @@ public class MockSessionZKClient extends SessionZooKeeperClient {
}
MockSessionZKClient(Curator curator, TenantName tenantName, long sessionId, ApplicationPackage application) {
- super(curator, TenantRepository.getSessionsPath(tenantName).append(String.valueOf(sessionId)));
+ super(curator,
+ ConfigCurator.create(curator),
+ TenantRepository.getSessionsPath(tenantName).append(String.valueOf(sessionId)),
+ ConfigUtils.getCanonicalHostName());
this.app = application;
curator.create(TenantRepository.getSessionsPath(tenantName).append(String.valueOf(sessionId)));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index e53f9270983..1fa7ceed755 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -43,6 +43,7 @@ import com.yahoo.vespa.config.server.tenant.ContainerEndpointsCache;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever;
import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -172,7 +173,7 @@ public class SessionPreparerTest {
HostRegistry<ApplicationId> hostValidator = new HostRegistry<>();
hostValidator.update(applicationId("foo"), Collections.singletonList("mytesthost"));
preparer.prepare(hostValidator, new BaseDeployLogger(), new PrepareParams.Builder().applicationId(applicationId("default")).build(),
- Optional.empty(), tenantPath, Instant.now(), app.getAppDir(), app, new SessionZooKeeperClient(curator, sessionsPath));
+ Optional.empty(), tenantPath, Instant.now(), app.getAppDir(), app, createSessionZooKeeperClient());
}
@Test
@@ -187,7 +188,7 @@ public class SessionPreparerTest {
hostValidator.update(applicationId, Collections.singletonList("mytesthost"));
preparer.prepare(hostValidator, logger, new PrepareParams.Builder().applicationId(applicationId).build(),
Optional.empty(), tenantPath, Instant.now(), app.getAppDir(), app,
- new SessionZooKeeperClient(curator, sessionsPath));
+ createSessionZooKeeperClient());
assertEquals(logged.toString(), "");
}
@@ -199,9 +200,8 @@ public class SessionPreparerTest {
.applicationName("foo").instanceName("quux").build();
PrepareParams params = new PrepareParams.Builder().applicationId(origId).build();
prepare(testApp, params);
- SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator, sessionsPath);
assertTrue(configCurator.exists(sessionsPath.append(SessionZooKeeperClient.APPLICATION_ID_PATH).getAbsolute()));
- assertThat(zkc.readApplicationId(), is(origId));
+ assertThat(createSessionZooKeeperClient().readApplicationId(), is(origId));
}
@Test
@@ -336,7 +336,7 @@ public class SessionPreparerTest {
FilesApplicationPackage applicationPackage = getApplicationPackage(app);
return preparer.prepare(new HostRegistry<>(), getLogger(), params,
Optional.empty(), tenantPath, Instant.now(), applicationPackage.getAppDir(),
- applicationPackage, new SessionZooKeeperClient(curator, sessionsPath));
+ applicationPackage, createSessionZooKeeperClient());
}
private FilesApplicationPackage getApplicationPackage(File testFile) throws IOException {
@@ -360,6 +360,10 @@ public class SessionPreparerTest {
ApplicationName.from(applicationName), InstanceName.defaultName());
}
+ private SessionZooKeeperClient createSessionZooKeeperClient() {
+ return new SessionZooKeeperClient(curator, configCurator, sessionsPath, ConfigUtils.getCanonicalHostName());
+ }
+
private static class FailWithTransientExceptionProvisioner implements Provisioner {
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
index 13a27e570c2..9b9682faf5f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
@@ -11,6 +11,8 @@ import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
+import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.FlagSource;
@@ -153,7 +155,10 @@ public class SessionRepositoryTest {
}
private void createSession(long sessionId, boolean wait, SessionRepository sessionRepository) {
- SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator, sessionRepository.getSessionPath(sessionId));
+ SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
+ ConfigCurator.create(curator),
+ sessionRepository.getSessionPath(sessionId),
+ ConfigUtils.getCanonicalHostName());
zkc.createNewSession(Instant.now());
if (wait) {
Curator.CompletionWaiter waiter = zkc.getUploadWaiter();
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
index 1d7df7acfd0..fd0e34b9814 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.path.Path;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Before;
@@ -112,7 +113,10 @@ public class SessionZooKeeperClientTest {
}
private SessionZooKeeperClient createSessionZKClient(String sessionId) {
- SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator, Path.fromString(sessionId));
+ SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
+ ConfigCurator.create(curator),
+ Path.fromString(sessionId),
+ ConfigUtils.getCanonicalHostName());
zkc.createNewSession(Instant.now());
return zkc;
}