summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-08-21 12:36:18 +0200
committerHarald Musum <musum@verizonmedia.com>2020-08-21 12:36:18 +0200
commit1171c419751a619ea39051c7df2691327388c7b7 (patch)
tree2d216653a6a5a5f36f4c96f9dee9dd4ad042c0c3 /configserver
parent67e528443cca68cc527e50c2714ad1717563c458 (diff)
Run TenantsMaintainer when use-tenant-meta-data feature flag is true
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java5
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");