summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java2
-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
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java8
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java6
6 files changed, 41 insertions, 14 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index e465f97ae4c..ad91ad6e1bc 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -87,6 +87,8 @@ public interface ModelContext {
return 0.9999;
}
+ String docprocLoadBalancerType();
+
boolean useDistributorBtreeDb();
boolean useThreePhaseUpdates();
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) {
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 288df341f2a..c925157b980 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
@@ -153,6 +153,7 @@ public class ModelContextImpl implements ModelContext {
private final double defaultTermwiseLimit;
private final double threadPoolSizeFactor;
private final double queueSizefactor;
+ private final String docprocLoadBalancerType;
private final Optional<AthenzDomain> athenzDomain;
private final Optional<ApplicationRoles> applicationRoles;
private final int jdiscHealthCheckProxyClientTimeout;
@@ -194,6 +195,8 @@ public class ModelContextImpl implements ModelContext {
.with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value();
queueSizefactor = Flags.DEFAULT_QUEUE_SIZE_FACTOR.bindTo(flagSource)
.with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value();
+ docprocLoadBalancerType = Flags.DOCPROC_LOADBALANCER_TYPE.bindTo(flagSource)
+ .with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value();
this.athenzDomain = athenzDomain;
this.applicationRoles = applicationRoles;
jdiscHealthCheckProxyClientTimeout = Flags.JDISC_HEALTH_CHECK_PROXY_CLIENT_TIMEOUT.bindTo(flagSource)
@@ -254,6 +257,11 @@ public class ModelContextImpl implements ModelContext {
}
@Override
+ public String docprocLoadBalancerType() {
+ return docprocLoadBalancerType;
+ }
+
+ @Override
public boolean useDistributorBtreeDb() {
return useDistributorBtreeDb;
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 59926355bda..838e55910e1 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -147,6 +147,12 @@ public class Flags {
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
+ public static final UnboundStringFlag DOCPROC_LOADBALANCER_TYPE = defineStringFlag(
+ "docproc-loadbalancer-type", "",
+ "Selects what kind of load balancer to use for document processing {'adaptive', 'legacy' ''}",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
+
public static final UnboundBooleanFlag USE_DISTRIBUTOR_BTREE_DB = defineFeatureFlag(
"use-distributor-btree-db", false,
"Whether to use the new B-tree bucket database in the distributors.",