diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-02-18 00:08:32 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-02-18 00:08:32 +0100 |
commit | ea223f582f274d7d57bf65ea295f1269e236c439 (patch) | |
tree | 61c37550770fcf259a1ba4be970fe5a7c1bc0817 /configserver | |
parent | 64b47633d54017c1973d3ea1b05b226cdf8f3133 (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')
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 { |