diff options
Diffstat (limited to 'config-model/src/main')
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) { |