From b07ee7625027c5756985a482848b8d3fcf55b9bc Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 9 Sep 2021 16:17:49 +0200 Subject: Wire in the executor up to TenantRepository --- .../vespa/config/server/deploy/ModelContextImpl.java | 11 +++++++++-- .../server/modelfactory/ActivatedModelsBuilder.java | 16 ++++++---------- .../server/modelfactory/PreparedModelsBuilder.java | 5 +++++ .../vespa/config/server/session/SessionPreparer.java | 9 +++++++-- .../vespa/config/server/session/SessionRepository.java | 1 + .../vespa/config/server/tenant/TenantRepository.java | 5 +++++ 6 files changed, 33 insertions(+), 14 deletions(-) (limited to 'configserver/src/main') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 414782a43f4..ea0cba511cd 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -6,7 +6,6 @@ import com.yahoo.component.Version; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; -import com.yahoo.config.model.api.ApplicationRoles; import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.model.api.ContainerEndpoint; @@ -23,7 +22,6 @@ import com.yahoo.config.provision.AthenzDomain; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; -import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.secretstore.SecretStore; @@ -41,6 +39,7 @@ import java.security.cert.X509Certificate; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ExecutorService; import java.util.function.ToIntFunction; import static com.yahoo.vespa.config.server.ConfigServerSpec.fromConfig; @@ -59,6 +58,7 @@ public class ModelContextImpl implements ModelContext { private final DeployLogger deployLogger; private final ConfigDefinitionRepo configDefinitionRepo; private final FileRegistry fileRegistry; + private final ExecutorService executor; private final HostProvisioner hostProvisioner; private final Provisioned provisioned; private final Optional reindexing; @@ -85,6 +85,7 @@ public class ModelContextImpl implements ModelContext { DeployLogger deployLogger, ConfigDefinitionRepo configDefinitionRepo, FileRegistry fileRegistry, + ExecutorService executor, Optional reindexing, HostProvisioner hostProvisioner, Provisioned provisioned, @@ -99,6 +100,7 @@ public class ModelContextImpl implements ModelContext { this.deployLogger = deployLogger; this.configDefinitionRepo = configDefinitionRepo; this.fileRegistry = fileRegistry; + this.executor = executor; this.reindexing = reindexing; this.hostProvisioner = hostProvisioner; this.provisioned = provisioned; @@ -137,6 +139,11 @@ public class ModelContextImpl implements ModelContext { @Override public FileRegistry getFileRegistry() { return fileRegistry; } + @Override + public ExecutorService getExecutor() { + return executor; + } + @Override public Optional reindexing() { return reindexing; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java index ffb4550caf0..b9728a4dd43 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java @@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableSet; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.component.Version; import com.yahoo.config.application.api.ApplicationPackage; -import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.config.model.api.Model; import com.yahoo.config.model.api.ModelContext; @@ -29,20 +28,17 @@ import com.yahoo.vespa.config.server.monitoring.Metrics; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.SessionZooKeeperClient; import com.yahoo.vespa.config.server.session.SilentDeployLogger; -import com.yahoo.vespa.config.server.tenant.ApplicationRolesStore; import com.yahoo.vespa.config.server.tenant.ContainerEndpointsCache; import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore; import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever; -import com.yahoo.vespa.config.server.tenant.TenantListener; import com.yahoo.vespa.config.server.tenant.TenantRepository; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.flags.FlagSource; -import java.security.cert.X509Certificate; import java.util.Comparator; -import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.concurrent.ExecutorService; import java.util.logging.Level; import java.util.logging.Logger; @@ -65,11 +61,13 @@ public class ActivatedModelsBuilder extends ModelsBuilder { private final Curator curator; private final FlagSource flagSource; private final SecretStore secretStore; + private final ExecutorService executor; public ActivatedModelsBuilder(TenantName tenant, long applicationGeneration, SessionZooKeeperClient zkClient, Optional currentActiveApplicationSet, + ExecutorService executor, Curator curator, Metrics metrics, PermanentApplicationPackage permanentApplicationPackage, @@ -80,11 +78,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder { Zone zone, ModelFactoryRegistry modelFactoryRegistry, ConfigDefinitionRepo configDefinitionRepo) { - super(modelFactoryRegistry, - configserverConfig, - zone, - hostProvisionerProvider, - new SilentDeployLogger()); + super(modelFactoryRegistry, configserverConfig, zone, hostProvisionerProvider, new SilentDeployLogger()); this.tenant = tenant; this.applicationGeneration = applicationGeneration; this.zkClient = zkClient; @@ -95,6 +89,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder { this.curator = curator; this.flagSource = flagSource; this.secretStore = secretStore; + this.executor = executor; } @Override @@ -116,6 +111,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder { new SilentDeployLogger(), configDefinitionRepo, getForVersionOrLatest(applicationPackage.getFileRegistries(), modelFactory.version()).orElse(new MockFileRegistry()), + executor, new ApplicationCuratorDatabase(tenant, curator).readReindexingStatus(applicationId), createStaticProvisioner(applicationPackage, modelContextProperties.applicationId(), provisioned), provisioned, diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java index e5ef6dd38c7..1a8092d36b3 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java @@ -38,6 +38,7 @@ import java.time.Duration; import java.time.Instant; import java.util.List; import java.util.Optional; +import java.util.concurrent.ExecutorService; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -57,11 +58,13 @@ public class PreparedModelsBuilder extends ModelsBuilder currentActiveApplicationSet; private final ModelContext.Properties properties; private final Curator curator; + private final ExecutorService executor; public PreparedModelsBuilder(ModelFactoryRegistry modelFactoryRegistry, PermanentApplicationPackage permanentApplicationPackage, ConfigDefinitionRepo configDefinitionRepo, FileRegistry fileRegistry, + ExecutorService executor, HostProvisionerProvider hostProvisionerProvider, Curator curator, HostValidator hostValidator, @@ -79,6 +82,7 @@ public class PreparedModelsBuilder extends ModelsBuilder zkSessionWatcherExecutor; private final StripedExecutor zkApplicationWatcherExecutor; private final FileDistributionFactory fileDistributionFactory; + private final ExecutorService modelBuilderExecutor; private final FlagSource flagSource; private final SecretStore secretStore; private final HostProvisionerProvider hostProvisionerProvider; @@ -198,6 +200,8 @@ public class TenantRepository { this.reloadListener = reloadListener; this.tenantListener = tenantListener; this.zookeeperServerConfig = zookeeperServerConfig; + // This we should control with a feature flag. + this.modelBuilderExecutor = new InThreadExecutorService(); curator.framework().getConnectionStateListenable().addListener(this::stateChanged); @@ -335,6 +339,7 @@ public class TenantRepository { PermanentApplicationPackage permanentApplicationPackage = new PermanentApplicationPackage(configserverConfig); SessionPreparer sessionPreparer = new SessionPreparer(modelFactoryRegistry, fileDistributionFactory, + modelBuilderExecutor, hostProvisionerProvider, permanentApplicationPackage, configserverConfig, -- cgit v1.2.3