aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2022-07-07 12:06:18 +0200
committerBjørn Christian Seime <bjorncs@yahooinc.com>2022-07-07 12:48:34 +0200
commitbacf22c1950434659874c557663a7b545cf6eea5 (patch)
tree72eb5fbaefdd9656140a63e1a72c92b71261d434 /config-model
parenteadeb2af9bd28fda3a857c7f011031ab6f643204 (diff)
Only add bundles based on enabled features for standalone container
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java9
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java15
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java1
7 files changed, 40 insertions, 16 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
index 15a0e060e1c..33c125dcecf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
@@ -7,10 +7,12 @@ import com.yahoo.container.handler.threadpool.ContainerThreadpoolConfig;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.ContainerThreadpool;
+import com.yahoo.vespa.model.container.PlatformBundles;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.UserBindingPattern;
+import java.nio.file.Path;
import java.util.Collection;
import java.util.Collections;
@@ -21,6 +23,8 @@ import java.util.Collections;
public class ContainerDocumentApi {
public static final String DOCUMENT_V1_PREFIX = "/document/v1";
+ public static final Path VESPACLIENT_CONTAINER_BUNDLE =
+ PlatformBundles.absoluteBundlePath("vespaclient-container-plugin");
private final boolean ignoreUndefinedFields;
@@ -28,6 +32,11 @@ public class ContainerDocumentApi {
this.ignoreUndefinedFields = ignoreUndefinedFields;
addRestApiHandler(cluster, handlerOptions);
addFeedHandler(cluster, handlerOptions);
+ addVespaClientContainerBundle(cluster);
+ }
+
+ public static void addVespaClientContainerBundle(ContainerCluster<?> c) {
+ c.addPlatformBundle(VESPACLIENT_CONTAINER_BUNDLE);
}
private static void addFeedHandler(ContainerCluster<?> cluster, HandlerOptions handlerOptions) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index 9785858b338..937d7cf58d3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -78,7 +78,6 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
public static final int heapSizePercentageOfTotalNodeMemory = 70;
public static final int heapSizePercentageOfTotalNodeMemoryWhenCombinedCluster = 18;
-
private final Set<FileReference> applicationBundles = new LinkedHashSet<>();
private final Set<String> previousHosts;
@@ -116,18 +115,10 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
addMetricsHandlers();
addTestrunnerComponentsIfTester(deployState);
- addPlatformBundlesForApplicationCluster();
transport_connections_per_target = deployState.featureFlags().mbusJavaRpcNumTargets();
transport_events_before_wakeup = deployState.featureFlags().mbusJavaEventsBeforeWakeup();
}
- private void addPlatformBundlesForApplicationCluster() {
- Set<String> bundles = Set.of(
- "container-search-and-docproc", "container-search-gui", "docprocs",
- "linguistics-components", "vespaclient-container-plugin");
- bundles.forEach(b -> addPlatformBundle(PlatformBundles.absoluteBundlePath(b)));
- }
-
@Override
protected void doPrepare(DeployState deployState) {
addAndSendApplicationBundles(deployState);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index 6b6192a04ef..2385b5b3812 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -70,6 +70,8 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.TreeSet;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Parent class for all container cluster types.
@@ -126,6 +128,10 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public static final BindingPattern VIP_HANDLER_BINDING = SystemBindingPattern.fromHttpPath("/status.html");
+ public static final Set<Path> SEARCH_AND_DOCPROC_BUNDLES = Stream.of(
+ PlatformBundles.searchAndDocprocBundle, "container-search-gui", "docprocs", "linguistics-components")
+ .map(PlatformBundles::absoluteBundlePath).collect(Collectors.toSet());
+
private final String name;
protected List<CONTAINER> containers = new ArrayList<>();
@@ -388,6 +394,18 @@ public abstract class ContainerCluster<CONTAINER extends Container>
return Collections.unmodifiableCollection(allComponents);
}
+ /*
+ Add all search/docproc/feed related platform bundles.
+ This is only required for configured containers as the platform bundle set is not allowed to change between config generations.
+ For standalone container platform bundles can be added on features enabled as an update of application package requires restart.
+ */
+ public void addAllPlatformBundles() {
+ ContainerDocumentApi.addVespaClientContainerBundle(this);
+ addSearchAndDocprocBundles();
+ }
+
+ public void addSearchAndDocprocBundles() { SEARCH_AND_DOCPROC_BUNDLES.forEach(this::addPlatformBundle); }
+
private void recursivelyFindAllComponents(Collection<Component<?, ?>> allComponents, AbstractConfigProducer<?> current) {
for (AbstractConfigProducer<?> child: current.getChildren().values()) {
if (child instanceof Component)
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
index f2233680e9b..fee10b965aa 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
@@ -27,29 +27,29 @@ public class ContainerDocproc extends ContainerSubsystem<DocprocChains>
public final Options options;
// Whether or not to prefer sending to a local node.
- private boolean preferLocalNode = false;
+ private final boolean preferLocalNode = false;
// The number of nodes to use per client.
- private int numNodesPerClient = 0;
+ private final int numNodesPerClient = 0;
- private Map<Pair<String, String>, String> fieldNameSchemaMap = new HashMap<>();
+ private final Map<Pair<String, String>, String> fieldNameSchemaMap = new HashMap<>();
- public ContainerDocproc(ContainerCluster cluster, DocprocChains chains) {
+ public ContainerDocproc(ContainerCluster<?> cluster, DocprocChains chains) {
this(cluster, chains, new Options( null, null, null, null, null, null));
}
- public ContainerDocproc(ContainerCluster cluster, DocprocChains chains, Options options) {
+ public ContainerDocproc(ContainerCluster<?> cluster, DocprocChains chains, Options options) {
this(cluster, chains, options, true);
}
private void addSource(
- final ContainerCluster cluster, final String name, final SessionConfig.Type.Enum type) {
+ final ContainerCluster<?> cluster, final String name, final SessionConfig.Type.Enum type) {
final MbusClient mbusClient = new MbusClient(name, type);
mbusClient.addClientBindings(SystemBindingPattern.fromPattern("mbus://*/" + mbusClient.getSessionName()));
cluster.addComponent(mbusClient);
}
- public ContainerDocproc(ContainerCluster cluster, DocprocChains chains, Options options, boolean addSourceClientProvider) {
+ public ContainerDocproc(ContainerCluster<?> cluster, DocprocChains chains, Options options, boolean addSourceClientProvider) {
super(chains);
assert (options != null) : "Null Options for " + this + " under cluster " + cluster.getName();
this.options = options;
@@ -58,6 +58,7 @@ public class ContainerDocproc extends ContainerSubsystem<DocprocChains>
addSource(cluster, "source", SessionConfig.Type.SOURCE);
addSource(cluster, MbusRequestContext.internalNoThrottledSource, SessionConfig.Type.INTERNAL);
}
+ cluster.addSearchAndDocprocBundles();
}
public boolean isPreferLocalNode() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
index 58151063956..3ac12381a1f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
@@ -59,6 +59,7 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains>
owningCluster.addComponent(Component.fromClassAndBundle(QUERY_PROFILE_REGISTRY_CLASS, searchAndDocprocBundle));
owningCluster.addComponent(Component.fromClassAndBundle(com.yahoo.search.schema.SchemaInfo.class.getName(), searchAndDocprocBundle));
owningCluster.addComponent(Component.fromClassAndBundle(SearchStatusExtension.class.getName(), searchAndDocprocBundle));
+ cluster.addSearchAndDocprocBundles();
}
public void connectSearchClusters(Map<String, SearchCluster> searchClusters) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index 7cc1109f25f..1c47f1d7c9c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -205,6 +205,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
addServerProviders(deployState, spec, cluster);
+ if (!standaloneBuilder) cluster.addAllPlatformBundles();
+
// Must be added after nodes:
addDeploymentSpecConfig(cluster, context, deployState.getDeployLogger());
addZooKeeper(cluster, spec);
@@ -595,6 +597,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
Element processingElement = XML.getChild(spec, "processing");
if (processingElement == null) return;
+ cluster.addSearchAndDocprocBundles();
addIncludes(processingElement);
cluster.setProcessingChains(new DomProcessingBuilder(null).build(deployState, cluster, processingElement),
serverBindings(processingElement, ProcessingChains.defaultBindings).toArray(BindingPattern[]::new));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
index d4595b3adfd..22923a724a6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
@@ -298,6 +298,7 @@ public class Content extends ConfigModel {
content.ownedIndexingCluster = Optional.of(indexingCluster);
indexingCluster.addDefaultHandlersWithVip();
+ indexingCluster.addAllPlatformBundles();
addDocproc(indexingCluster);
List<ApplicationContainer> nodes = new ArrayList<>();