diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-08-21 12:36:18 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-08-21 12:36:18 +0200 |
commit | 1171c419751a619ea39051c7df2691327388c7b7 (patch) | |
tree | 2d216653a6a5a5f36f4c96f9dee9dd4ad042c0c3 /configserver | |
parent | 67e528443cca68cc527e50c2714ad1717563c458 (diff) |
Run TenantsMaintainer when use-tenant-meta-data feature flag is true
Diffstat (limited to 'configserver')
4 files changed, 23 insertions, 7 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 d8ef10b150f..467b541d24f 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 @@ -839,11 +839,13 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye } public Set<TenantName> deleteUnusedTenants(Duration ttlForUnusedTenant, Instant now) { + if ( ! useTenantMetaData.value()) return Set.of(); + return tenantRepository.getAllTenantNames().stream() .filter(tenantName -> activeApplications(tenantName).isEmpty()) .filter(tenantName -> !tenantName.equals(TenantName.defaultName())) // Not allowed to remove 'default' tenant .filter(tenantName -> !tenantName.equals(HOSTED_VESPA_TENANT)) // Not allowed to remove 'hosted-vespa' tenant - .filter(tenantName -> tenantRepository.getTenant(tenantName).getCreatedTime().isBefore(now.minus(ttlForUnusedTenant))) + .filter(tenantName -> getTenantMetaData(tenantRepository.getTenant(tenantName)).lastDeployTimestamp().isBefore(now.minus(ttlForUnusedTenant))) .peek(tenantRepository::deleteTenant) .collect(Collectors.toSet()); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java index fe72fda6f25..4e44b9cae33 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.flags.FlagSource; +import java.time.Clock; import java.time.Duration; /** @@ -20,7 +21,7 @@ import java.time.Duration; */ public class ConfigServerMaintenance extends AbstractComponent { - //private final TenantsMaintainer tenantsMaintainer; + private final TenantsMaintainer tenantsMaintainer; private final FileDistributionMaintainer fileDistributionMaintainer; private final SessionsMaintainer sessionsMaintainer; private final ApplicationPackageMaintainer applicationPackageMaintainer; @@ -32,8 +33,7 @@ public class ConfigServerMaintenance extends AbstractComponent { FlagSource flagSource, Metric metric) { DefaultTimes defaults = new DefaultTimes(configserverConfig); - // TODO: Disabled until we have application metadata per tenant - //tenantsMaintainer = new TenantsMaintainer(applicationRepository, curator, defaults.tenantsMaintainerInterval); + tenantsMaintainer = new TenantsMaintainer(applicationRepository, curator, flagSource, defaults.defaultInterval, Clock.systemUTC()); fileDistributionMaintainer = new FileDistributionMaintainer(applicationRepository, curator, defaults.defaultInterval, flagSource); sessionsMaintainer = new SessionsMaintainer(applicationRepository, curator, Duration.ofMinutes(1), flagSource); applicationPackageMaintainer = new ApplicationPackageMaintainer(applicationRepository, curator, Duration.ofMinutes(1), flagSource); @@ -44,6 +44,7 @@ public class ConfigServerMaintenance extends AbstractComponent { fileDistributionMaintainer.close(); sessionsMaintainer.close(); applicationPackageMaintainer.close(); + tenantsMaintainer.close(); } /* diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java index 4b37638cb50..e32ffeb47e1 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java @@ -1,14 +1,19 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.maintenance; +import com.yahoo.cloud.config.ConfigserverConfig; +import com.yahoo.docproc.jdisc.metric.NullMetric; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.GlobalComponentRegistry; +import com.yahoo.vespa.config.server.MockLogRetriever; +import com.yahoo.vespa.config.server.MockTesterClient; 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.curator.Curator; import com.yahoo.vespa.curator.mock.MockCurator; +import com.yahoo.vespa.flags.FlagSource; import java.time.Clock; @@ -18,7 +23,7 @@ class MaintainerTester { private final TenantRepository tenantRepository; private final ApplicationRepository applicationRepository; - MaintainerTester(Clock clock) { + MaintainerTester(Clock clock, FlagSource flagSource) { curator = new MockCurator(); GlobalComponentRegistry componentRegistry = new TestComponentRegistry.Builder() .curator(curator) @@ -28,7 +33,12 @@ class MaintainerTester { applicationRepository = new ApplicationRepository(tenantRepository, new SessionHandlerTest.MockProvisioner(), new OrchestratorMock(), - componentRegistry.getClock()); + new ConfigserverConfig.Builder().build(), + new MockLogRetriever(), + clock, + new MockTesterClient(), + new NullMetric(), + flagSource); } Curator curator() { return curator; } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java index a24367d250b..d6335fbd0f1 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java @@ -9,6 +9,8 @@ import com.yahoo.test.ManualClock; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.session.PrepareParams; import com.yahoo.vespa.config.server.tenant.TenantRepository; +import com.yahoo.vespa.flags.FlagSource; +import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.InMemoryFlagSource; import org.junit.Test; @@ -23,7 +25,8 @@ public class TenantsMaintainerTest { @Test public void deleteTenantWithNoApplications() { ManualClock clock = new ManualClock("2020-06-01T00:00:00"); - MaintainerTester tester = new MaintainerTester(clock); + FlagSource flagSource = new InMemoryFlagSource().withBooleanFlag(Flags.USE_TENANT_META_DATA.id(), true); + MaintainerTester tester = new MaintainerTester(clock, flagSource); TenantRepository tenantRepository = tester.tenantRepository(); ApplicationRepository applicationRepository = tester.applicationRepository(); File applicationPackage = new File("src/test/apps/app"); |