diff options
Diffstat (limited to 'config-model/src/main')
5 files changed, 35 insertions, 13 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 a6f2a205f94..f93688abddc 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 @@ -36,6 +36,7 @@ public class TestProperties implements ModelContext.Properties { private boolean isFirstTimeDeployment = false; private boolean useDedicatedNodeForLogserver = false; private boolean useFdispatchByDefault = true; + private boolean useAdaptiveDispatch = false; @Override public boolean multitenant() { return multitenant; } @Override public ApplicationId applicationId() { return applicationId; } @@ -48,6 +49,7 @@ public class TestProperties implements ModelContext.Properties { @Override public Set<Rotation> rotations() { return rotations; } @Override public boolean isBootstrap() { return isBootstrap; } @Override public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } + @Override public boolean useAdaptiveDispatch() { return useAdaptiveDispatch; } @Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } @Override public boolean useFdispatchByDefault() { return useFdispatchByDefault; } @@ -61,6 +63,11 @@ public class TestProperties implements ModelContext.Properties { return this; } + public TestProperties setUseAdaptiveDispatch(boolean useAdaptiveDispatch) { + this.useAdaptiveDispatch = useAdaptiveDispatch; + return this; + } + public TestProperties setMultitenant(boolean multitenant) { this.multitenant = multitenant; return this; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/TuningDispatch.java b/config-model/src/main/java/com/yahoo/vespa/model/content/TuningDispatch.java index b3815994742..ec958589483 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/TuningDispatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/TuningDispatch.java @@ -33,7 +33,7 @@ public class TuningDispatch { public static class Builder { private Integer maxHitsPerPartition; - private DispatchPolicy dispatchPolicy = DispatchPolicy.ROUNDROBIN; + private DispatchPolicy dispatchPolicy; private Boolean useLocalNode; private Double minGroupCoverage; private Double minActiveDocsCoverage; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java index 8158de692a9..b9c937b4a4c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java @@ -7,7 +7,6 @@ import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.content.SearchCoverage; -import com.yahoo.vespa.model.content.TuningDispatch; import java.util.ArrayList; import java.util.List; @@ -32,6 +31,7 @@ public class Dispatch extends AbstractService implements SearchInterface, private final int dispatchLevel; private final boolean preferLocalRow; private final boolean isTopLevel; + private boolean useAdaptiveDispatch; private Dispatch(DispatchGroup dispatchGroup, AbstractConfigProducer parent, String subConfigId, NodeSpec nodeSpec, int dispatchLevel, boolean preferLocalRow, boolean isTopLevel) { @@ -41,6 +41,7 @@ public class Dispatch extends AbstractService implements SearchInterface, this.dispatchLevel = dispatchLevel; this.preferLocalRow = preferLocalRow; this.isTopLevel = isTopLevel; + this.useAdaptiveDispatch = false; portsMeta.on(0).tag("rpc").tag("admin"); portsMeta.on(1).tag("fs4"); portsMeta.on(2).tag("http").tag("json").tag("health").tag("state"); @@ -49,6 +50,11 @@ public class Dispatch extends AbstractService implements SearchInterface, .setProp("index", nodeSpec.groupIndex()); } + public Dispatch useAdaptiveDispatch(boolean useAdaptiveDispatch) { + this.useAdaptiveDispatch = useAdaptiveDispatch; + return this; + } + public static Dispatch createTld(DispatchGroup dispatchGroup, AbstractConfigProducer parent, int rowId) { return createTld(dispatchGroup, parent, rowId, false); } @@ -139,6 +145,9 @@ public class Dispatch extends AbstractService implements SearchInterface, datasetBuilder.querydistribution(PartitionsConfig.Dataset.Querydistribution.Enum.FIXEDROW); datasetBuilder.maxnodesdownperfixedrow(dispatchGroup.getMaxNodesDownPerFixedRow()); } + if (useAdaptiveDispatch) { + datasetBuilder.useroundrobinforfixedrow(false); + } SearchCoverage coverage = dispatchGroup.getSearchCoverage(); if (coverage != null) { if (coverage.getMinimum() != null) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java index 6aa023e486b..fe61041196b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java @@ -107,6 +107,7 @@ public class IndexedSearchCluster extends SearchCluster private final DispatchGroup rootDispatch; private DispatchSpec dispatchSpec; private final boolean useFdispatchByDefault; + private final boolean useAdaptiveDispatch; private List<SearchNode> searchNodes = new ArrayList<>(); /** @@ -125,6 +126,7 @@ public class IndexedSearchCluster extends SearchCluster dispatchParent = new SimpleConfigProducer(this, "dispatchers"); rootDispatch = new DispatchGroup(this); useFdispatchByDefault = deployState.getProperties().useFdispatchByDefault(); + useAdaptiveDispatch = deployState.getProperties().useAdaptiveDispatch(); } @Override @@ -186,6 +188,7 @@ public class IndexedSearchCluster extends SearchCluster public Dispatch addTld(DeployLogger deployLogger, AbstractConfigProducer tldParent, HostResource hostResource) { int index = rootDispatch.getDispatchers().size(); Dispatch tld = Dispatch.createTld(rootDispatch, tldParent, index); + tld.useAdaptiveDispatch(useAdaptiveDispatch); tld.setHostResource(hostResource); tld.initService(deployLogger); rootDispatch.addDispatcher(tld); @@ -210,12 +213,13 @@ public class IndexedSearchCluster extends SearchCluster log.log(LogLevel.DEBUG, "Adding tld with index " + containerIndex + " for content cluster " + this.getClusterName() + ", container cluster " + containerClusterName + " (container id " + containerSubId + ") on host " + container.getHostResource().getHostname()); - rootDispatch.addDispatcher(createTld(deployLogger, tldParent, container.getHostResource(), containerClusterName, containerIndex)); + rootDispatch.addDispatcher(createTld(deployLogger, tldParent, container.getHostResource(), containerClusterName, containerIndex).useAdaptiveDispatch(useAdaptiveDispatch)); } } private Dispatch createTld(DeployLogger deployLogger, AbstractConfigProducer tldParent, HostResource hostResource, String containerClusterName, int containerIndex) { Dispatch tld = Dispatch.createTldWithContainerIdInName(rootDispatch, tldParent, containerClusterName, containerIndex); + tld.useAdaptiveDispatch(useAdaptiveDispatch); tld.setHostResource(hostResource); tld.initService(deployLogger); return tld; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java index 2571381167e..2e51e432e68 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java @@ -19,7 +19,7 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P public static class Dispatch implements PartitionsConfig.Producer { public Integer maxHitsPerPartition = null; - public TuningDispatch.DispatchPolicy policy = TuningDispatch.DispatchPolicy.ROUNDROBIN; + public TuningDispatch.DispatchPolicy policy = null; public boolean useLocalNode = false; public Double minGroupCoverage = null; public Double minActiveDocsCoverage = null; @@ -41,15 +41,17 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P dataset.min_activedocs_coverage(minActiveDocsCoverage); } } - for (PartitionsConfig.Dataset.Builder dataset : builder.dataset) { - switch (policy) { - case ADAPTIVE: - dataset.useroundrobinforfixedrow(false); - break; - case ROUNDROBIN: - default: - dataset.useroundrobinforfixedrow(true); - break; + if (policy != null) { + for (PartitionsConfig.Dataset.Builder dataset : builder.dataset) { + switch (policy) { + case ADAPTIVE: + dataset.useroundrobinforfixedrow(false); + break; + case ROUNDROBIN: + default: + dataset.useroundrobinforfixedrow(true); + break; + } } } } |