summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2017-11-27 18:03:54 +0100
committerHarald Musum <musum@oath.com>2017-11-27 18:03:54 +0100
commit679f19d137c5c19ae3f0d4845e63b06e1fc34112 (patch)
treed34aac8a32c2cd27ce2557e30c0206e54fe8901d
parent775cbe184dcf306b38091e07d04f798d77f8873d (diff)
Do not create system tenants in constructor. Do not put into map of tenants unless absent
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java17
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java3
3 files changed, 14 insertions, 12 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
index d2cf17a38d4..5fb62a68e3e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
@@ -96,18 +96,17 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen
}
/**
- * New instance containing the given tenants. This will not create Zookeeper watches. For testing only
+ * New instance containing the given tenants. Creates no system tenants and noZookeeper watches. For testing only.
* @param globalComponentRegistry a {@link com.yahoo.vespa.config.server.GlobalComponentRegistry} instance
* @param tenants a collection of {@link Tenant}s
*/
+ // TODO: Get rid of the second argument and let callers use addTenant() instead
public Tenants(GlobalComponentRegistry globalComponentRegistry, Collection<Tenant> tenants) {
this.globalComponentRegistry = globalComponentRegistry;
this.curator = globalComponentRegistry.getCurator();
metricUpdater = globalComponentRegistry.getMetrics().getOrCreateMetricUpdater(Collections.emptyMap());
this.tenantListeners.add(globalComponentRegistry.getTenantListener());
curator.create(tenantsPath);
- createSystemTenants(globalComponentRegistry.getConfigserverConfig());
- createTenants();
this.directoryCache = curator.createDirectoryCache(tenantsPath.getAbsolute(), false, false, pathChildrenExecutor);
this.tenants.putAll(addTenants(tenants));
}
@@ -120,13 +119,13 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen
// Pre-condition: tenants path needs to exist in zk
private LinkedHashMap<TenantName, Tenant> addTenants(Collection<Tenant> newTenants) {
- LinkedHashMap<TenantName, Tenant> sessionTenants = new LinkedHashMap<>();
+ LinkedHashMap<TenantName, Tenant> tenants = new LinkedHashMap<>();
for (Tenant t : newTenants) {
- sessionTenants.put(t.getName(), t);
+ tenants.put(t.getName(), t);
}
- log.log(LogLevel.DEBUG, "Tenants at startup: " + sessionTenants);
- metricUpdater.setTenants(tenants.size());
- return sessionTenants;
+ log.log(LogLevel.DEBUG, "Tenants at startup: " + tenants);
+ metricUpdater.setTenants(this.tenants.size());
+ return tenants;
}
public synchronized void addTenant(TenantName tenantName) throws Exception {
@@ -191,7 +190,7 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen
try {
Tenant tenant = TenantBuilder.create(globalComponentRegistry, tenantName).build();
notifyNewTenant(tenant);
- tenants.put(tenantName, tenant);
+ tenants.putIfAbsent(tenantName, tenant);
} catch (Exception e) {
log.log(LogLevel.WARNING, "Error loading tenant '" + tenantName + "', skipping.", e);
}
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 d9a0db7e811..63f0f5f26b7 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
@@ -23,6 +23,7 @@ import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ProvisionLogger;
import com.yahoo.config.provision.Provisioner;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Version;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.config.server.ApplicationRepository;
@@ -57,6 +58,8 @@ import java.util.Optional;
*/
public class DeployTester {
+ private static final TenantName tenantName = TenantName.from("deploytester");
+
private final Clock clock;
private final Tenants tenants;
private final File testApp;
@@ -95,6 +98,7 @@ public class DeployTester {
try {
this.testApp = new File(appPath);
this.tenants = new Tenants(componentRegistry, Collections.emptySet());
+ tenants.addTenant(tenantName);
}
catch (Exception e) {
throw new IllegalArgumentException(e);
@@ -103,7 +107,7 @@ public class DeployTester {
}
public Tenant tenant() {
- return tenants.defaultTenant();
+ return tenants.getTenant(tenantName);
}
/** Create a model factory for the version of this source*/
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
index 76734aadae7..50e8c711330 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
@@ -7,7 +7,6 @@ import com.yahoo.config.model.api.ModelFactory;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
-import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Version;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.config.server.session.LocalSession;
@@ -60,7 +59,7 @@ public class RedeployTest {
modelFactories.add(DeployTester.createModelFactory(Clock.systemUTC()));
modelFactories.add(DeployTester.createFailingModelFactory(Version.fromIntValues(1, 0, 0)));
DeployTester tester = new DeployTester("ignored/app/path", modelFactories);
- ApplicationId id = ApplicationId.from(TenantName.from("default"),
+ ApplicationId id = ApplicationId.from(tester.tenant().getName(),
ApplicationName.from("default"),
InstanceName.from("default"));
assertFalse(tester.redeployFromLocalActive(id).isPresent());