summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-06-02 12:21:32 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-06-02 12:21:32 +0000
commit341d1ed24adbeb1eb9934980d498ca1227dd2270 (patch)
treecf3bff8030896cc71da44aff120957c24c6ba83e /config-model
parentb61f755113284dddacec36576af0f30180c3cb13 (diff)
Control docproc loadbalancer type with feature flag.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java15
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java18
3 files changed, 25 insertions, 14 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 16d1261b8d6..b00eb900221 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -42,6 +42,7 @@ public class TestProperties implements ModelContext.Properties {
private double defaultTermwiseLimit = 1.0;
private double threadPoolSizeFactor = 0.0;
private double queueSizeFactor = 0.0;
+ private String docprocLoadBalancerType = null;
private Optional<EndpointCertificateSecrets> endpointCertificateSecrets = Optional.empty();
private AthenzDomain athenzDomain;
private ApplicationRoles applicationRoles;
@@ -61,22 +62,22 @@ public class TestProperties implements ModelContext.Properties {
@Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; }
@Override public Optional<EndpointCertificateSecrets> endpointCertificateSecrets() { return endpointCertificateSecrets; }
@Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; }
-
- @Override
- public double threadPoolSizeFactor() {
+ @Override public String docprocLoadBalancerType() { return docprocLoadBalancerType; }
+ @Override public double threadPoolSizeFactor() {
return threadPoolSizeFactor;
}
-
- @Override
- public double queueSizeFactor() {
+ @Override public double queueSizeFactor() {
return queueSizeFactor;
}
-
@Override public boolean useDistributorBtreeDb() { return useDistributorBtreeDb; }
@Override public boolean useThreePhaseUpdates() { return useThreePhaseUpdates; }
@Override public Optional<AthenzDomain> athenzDomain() { return Optional.ofNullable(athenzDomain); }
@Override public Optional<ApplicationRoles> applicationRoles() { return Optional.ofNullable(applicationRoles); }
+ public TestProperties setDocprocLoadBalancerType(String type) {
+ docprocLoadBalancerType = type;
+ return this;
+ }
public TestProperties setDefaultTermwiseLimit(double limit) {
defaultTermwiseLimit = limit;
return this;
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 b35b7562704..ee83c9fa804 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
@@ -162,6 +162,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
private final double threadPoolSizeFactor;
private final double queueSizeFactor;
+ private final String docprocLoadbalancerType;
public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name, DeployState deployState) {
@@ -171,6 +172,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
this.zone = (deployState != null) ? deployState.zone() : Zone.defaultZone();
this.threadPoolSizeFactor = deployState.getProperties().threadPoolSizeFactor();
this.queueSizeFactor = deployState.getProperties().queueSizeFactor();
+ this.docprocLoadbalancerType = deployState.getProperties().docprocLoadBalancerType();
componentGroup = new ComponentGroup<>(this, "component");
@@ -200,6 +202,10 @@ public abstract class ContainerCluster<CONTAINER extends Container>
return queueSizeFactor;
}
+ public String getDocprocLoadbalancerType() {
+ return docprocLoadbalancerType;
+ }
+
public void setZone(Zone zone) {
this.zone = zone;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java b/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
index ecfa9a9e53e..3b9b8778e31 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
@@ -150,21 +150,25 @@ public final class DocumentProtocol implements Protocol, Documentrouteselectorpo
String policy = policy(docproc);
for (DocprocChain chain : docproc.getChains().allChains().allComponents()) {
- addChainHop(table, cluster.getConfigId(), policy, chain);
+ addChainHop(table, cluster.getConfigId(), policy, chain, cluster.getDocprocLoadbalancerType());
}
}
}
}
- private static void addChainHop(RoutingTableSpec table, String configId, String policy, DocprocChain chain) {
- final String selector;
+ private static void addChainHop(RoutingTableSpec table, String configId, String policy, DocprocChain chain, String docprocLoadBalancerType) {
+ final StringBuilder selector = new StringBuilder();
if (policy != null) {
- selector = configId + "/" + policy + "/" + chain.getSessionName();
+ selector.append(configId).append("/").append(policy).append("/").append(chain.getSessionName());
} else {
- selector = "[LoadBalancer:cluster=" + configId +
- ";session=" + chain.getSessionName() + "]";
+ selector.append("[LoadBalancer:cluster=").append(configId)
+ .append(";session=").append(chain.getSessionName());
+ if ((docprocLoadBalancerType != null) && ! docprocLoadBalancerType.isEmpty()) {
+ selector.append(";type=").append(docprocLoadBalancerType);
+ }
+ selector.append("]");
}
- table.addHop(new HopSpec(chain.getServiceName(), selector));
+ table.addHop(new HopSpec(chain.getServiceName(), selector.toString()));
}
private static String policy(ContainerDocproc docproc) {