From b78c761374dc987984517caffd83c6da7e3e47b2 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 19 Aug 2020 09:12:07 +0200 Subject: Uset getTenant method in ApplicationRepository in some places --- .../vespa/config/server/ApplicationRepository.java | 18 ++++++-------- .../server/http/v2/SessionActiveHandler.java | 2 +- .../maintenance/ApplicationPackageMaintainer.java | 2 +- .../config/server/ApplicationRepositoryTest.java | 28 ++++++++++------------ .../http/v2/ApplicationContentHandlerTest.java | 5 ++-- .../server/http/v2/ApplicationHandlerTest.java | 7 +++--- .../config/server/http/v2/HostHandlerTest.java | 5 ++-- .../server/http/v2/SessionActiveHandlerTest.java | 7 +++--- .../server/http/v2/SessionContentHandlerTest.java | 2 +- 9 files changed, 33 insertions(+), 43 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 88e252baf34..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 @@ -254,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; @@ -381,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) { @@ -414,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(); @@ -588,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; @@ -693,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); } @@ -726,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); @@ -746,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 activeSessionId = tenant.getApplicationRepo().activeSessionOf(applicationId); LocalSession session = tenant.getSessionRepository().createSession(applicationDirectory, 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/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 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(); -- cgit v1.2.3