aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-02-18 00:08:32 +0100
committerHarald Musum <musum@verizonmedia.com>2021-02-18 00:08:32 +0100
commitea223f582f274d7d57bf65ea295f1269e236c439 (patch)
tree61c37550770fcf259a1ba4be970fe5a7c1bc0817 /configserver
parent64b47633d54017c1973d3ea1b05b226cdf8f3133 (diff)
Inject ConfigCurator
The injected config curator is created based on config values, which is the correct way of doing it in non-test code. In addition, ConfigCurator will test connnection to server when it is created, so it is not good to create it for every tenant as was done before
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java13
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java4
4 files changed, 21 insertions, 9 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index 81e0574d373..491c3bc8298 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -125,6 +125,7 @@ public class SessionRepository {
TenantApplications applicationRepo,
SessionPreparer sessionPreparer,
Curator curator,
+ ConfigCurator configCurator,
Metrics metrics,
StripedExecutor<TenantName> zkWatcherExecutor,
PermanentApplicationPackage permanentApplicationPackage,
@@ -140,7 +141,7 @@ public class SessionRepository {
ConfigDefinitionRepo configDefinitionRepo,
TenantListener tenantListener) {
this.tenantName = tenantName;
- this.configCurator = ConfigCurator.create(curator);
+ this.configCurator = configCurator;
sessionCounter = new SessionCounter(configCurator, tenantName);
this.sessionsPath = TenantRepository.getSessionsPath(tenantName);
this.clock = clock;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
index 1b8e1f2c7e1..54b79aa79dd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
@@ -30,6 +30,7 @@ import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.SessionPreparer;
import com.yahoo.vespa.config.server.session.SessionRepository;
+import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
@@ -96,6 +97,7 @@ public class TenantRepository {
private final Locks<TenantName> tenantLocks = new Locks<>(1, TimeUnit.MINUTES);
private final HostRegistry hostRegistry;
private final TenantListener tenantListener;
+ private final ConfigCurator configCurator;
private final Curator curator;
private final Metrics metrics;
private final MetricUpdater metricUpdater;
@@ -134,7 +136,8 @@ public class TenantRepository {
ModelFactoryRegistry modelFactoryRegistry,
ConfigDefinitionRepo configDefinitionRepo,
ReloadListener reloadListener,
- TenantListener tenantListener) {
+ TenantListener tenantListener,
+ ConfigCurator configCurator) {
this(hostRegistry,
curator,
metrics,
@@ -151,7 +154,8 @@ public class TenantRepository {
modelFactoryRegistry,
configDefinitionRepo,
reloadListener,
- tenantListener);
+ tenantListener,
+ configCurator);
}
public TenantRepository(HostRegistry hostRegistry,
@@ -170,7 +174,8 @@ public class TenantRepository {
ModelFactoryRegistry modelFactoryRegistry,
ConfigDefinitionRepo configDefinitionRepo,
ReloadListener reloadListener,
- TenantListener tenantListener) {
+ TenantListener tenantListener,
+ ConfigCurator configCurator) {
this.hostRegistry = hostRegistry;
this.configserverConfig = configserverConfig;
this.bootstrapExecutor = Executors.newFixedThreadPool(configserverConfig.numParallelTenantLoaders(),
@@ -191,6 +196,7 @@ public class TenantRepository {
this.configDefinitionRepo = configDefinitionRepo;
this.reloadListener = reloadListener;
this.tenantListener = tenantListener;
+ this.configCurator = configCurator;
curator.framework().getConnectionStateListenable().addListener(this::stateChanged);
@@ -333,6 +339,7 @@ public class TenantRepository {
applicationRepo,
sessionPreparer,
curator,
+ configCurator,
metrics,
zkWatcherExecutor,
permanentApplicationPackage,
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
index 70bbe2031aa..313d94f63ab 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
@@ -27,6 +27,7 @@ import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
+import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -193,7 +194,7 @@ public class TenantRepositoryTest {
// Should get exception if config is true
expectedException.expect(RuntimeException.class);
expectedException.expectMessage("Could not create all tenants when bootstrapping, failed to create: [default]");
- new FailingDuringBootstrapTenantRepository(configserverConfig);
+ new FailingDuringBootstrapTenantRepository(configserverConfig, new MockCurator());
}
private List<String> readZKChildren(String path) throws Exception {
@@ -206,9 +207,9 @@ public class TenantRepositoryTest {
private static class FailingDuringBootstrapTenantRepository extends TenantRepository {
- public FailingDuringBootstrapTenantRepository(ConfigserverConfig configserverConfig) {
+ public FailingDuringBootstrapTenantRepository(ConfigserverConfig configserverConfig, Curator curator) {
super(new HostRegistry(),
- new MockCurator(),
+ curator,
Metrics.createTestMetrics(),
new StripedExecutor<>(new InThreadExecutorService()),
new FileDistributionFactory(new ConfigserverConfig.Builder().build()),
@@ -223,7 +224,8 @@ public class TenantRepositoryTest {
new ModelFactoryRegistry(List.of(new VespaModelFactory(new NullConfigModelRegistry()))),
new TestConfigDefinitionRepo(),
new TenantApplicationsTest.MockReloadListener(),
- new MockTenantListener());
+ new MockTenantListener(),
+ ConfigCurator.create(curator));
}
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
index ad20abaeaf5..7bd2db19615 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
@@ -17,6 +17,7 @@ import com.yahoo.vespa.config.server.host.HostRegistry;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
+import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.FlagSource;
@@ -61,7 +62,8 @@ public class TestTenantRepository extends TenantRepository {
modelFactoryRegistry,
configDefinitionRepo,
reloadListener,
- tenantListener);
+ tenantListener,
+ ConfigCurator.create(curator));
}
public static class Builder {