diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-05-20 09:15:50 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-05-20 09:15:50 +0000 |
commit | c603493e379ae6fb89300a2a5e25eb1f69a5e416 (patch) | |
tree | 11e77e3adbbebb6fd3944bb08d7e5ccff11fe032 | |
parent | ec544f535562bd33c3d36f7aa0751eb4972e9af2 (diff) |
Default dispatch policy is now adapative meaning that it will loadbalance groups based on latency.
9 files changed, 11 insertions, 56 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 bc22e90d229..2bea79fa0a7 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 @@ -61,8 +61,8 @@ public interface ModelContext { // TODO: Only needed for LbServicesProducerTest default boolean useDedicatedNodeForLogserver() { return true; } - // TODO Revisit in May or June 2020 - boolean useAdaptiveDispatch(); + // TODO Remove when 7.225 is last + default boolean useAdaptiveDispatch() { return true; } default Optional<EndpointCertificateSecrets> endpointCertificateSecrets() { return Optional.empty(); } 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 b815b72f851..33c2e4a3427 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 @@ -37,7 +37,6 @@ public class TestProperties implements ModelContext.Properties { private Zone zone; private Set<ContainerEndpoint> endpoints = Collections.emptySet(); private boolean useDedicatedNodeForLogserver = false; - private boolean useAdaptiveDispatch = false; private double topKProbability = 1.0; private boolean useDistributorBtreeDb = false; private boolean useThreePhaseUpdates = false; @@ -61,7 +60,6 @@ public class TestProperties implements ModelContext.Properties { @Override public boolean isBootstrap() { return false; } @Override public boolean isFirstTimeDeployment() { return false; } - @Override public boolean useAdaptiveDispatch() { return useAdaptiveDispatch; } @Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } @Override public Optional<EndpointCertificateSecrets> endpointCertificateSecrets() { return endpointCertificateSecrets; } @Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; } @@ -130,11 +128,6 @@ 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/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java index 56adc227df4..722c9954f8f 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 @@ -52,7 +52,6 @@ public class IndexedSearchCluster extends SearchCluster private final DispatchGroup rootDispatch; private DispatchSpec dispatchSpec; - private final boolean useAdaptiveDispatch; private final double defaultTopKProbability; private List<SearchNode> searchNodes = new ArrayList<>(); @@ -70,7 +69,6 @@ public class IndexedSearchCluster extends SearchCluster super(parent, clusterName, index); unionCfg = new UnionConfiguration(this, documentDbs); rootDispatch = new DispatchGroup(this); - useAdaptiveDispatch = deployState.getProperties().useAdaptiveDispatch(); defaultTopKProbability = deployState.getProperties().defaultTopKProbability(); } @@ -307,8 +305,6 @@ public class IndexedSearchCluster extends SearchCluster nodeBuilder.port(node.getRpcPort()); builder.node(nodeBuilder); } - if (useAdaptiveDispatch) - builder.distributionPolicy(DistributionPolicy.ADAPTIVE); if (tuning.dispatch.getTopkProbability() != null) { builder.topKProbability(tuning.dispatch.getTopkProbability()); } else { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java index 802082cc2ff..0cf5d5e7397 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java @@ -310,14 +310,14 @@ public class ContentClusterTest extends ContentBaseTest { StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder(); model.getConfig(builder, "bar/distributor/0"); StorDistributormanagerConfig config = new StorDistributormanagerConfig(builder); - assertEquals(false, config.inlinebucketsplitting()); + assertFalse(config.inlinebucketsplitting()); } { StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); model.getConfig(builder, "bar/storage/0"); StorFilestorConfig config = new StorFilestorConfig(builder); - assertEquals(false, config.enable_multibit_split_optimalization()); + assertFalse(config.enable_multibit_split_optimalization()); } } @@ -343,7 +343,7 @@ public class ContentClusterTest extends ContentBaseTest { List<String> sds = ApplicationPackageUtils.generateSchemas("type1", "type2"); try{ new VespaModelCreatorWithMockPkg(getHosts(), xml, sds).create(); - assertTrue("Deploying without redundancy should fail", false); + fail("Deploying without redundancy should fail"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage(), e.getMessage().contains("missing required element \"redundancy\"")); } @@ -773,7 +773,7 @@ public class ContentClusterTest extends ContentBaseTest { " <documents/>" + " <engine>" + " <proton>" + - " <flush-on-shutdown>" + Boolean.toString(flushOnShutdown) + "</flush-on-shutdown>" + + " <flush-on-shutdown>" + flushOnShutdown + "</flush-on-shutdown>" + " </proton>" + " </engine>" + " <group>" + @@ -944,27 +944,6 @@ public class ContentClusterTest extends ContentBaseTest { assertEquals(topKProbability, cfg.topKProbability(), 0.0); } - private void verifyRoundRobinPropertiesControl(boolean useAdaptiveDispatch) { - VespaModel model = createEnd2EndOneNode(new TestProperties().setUseAdaptiveDispatch(useAdaptiveDispatch)); - - ContentCluster cc = model.getContentClusters().get("storage"); - DispatchConfig.Builder builder = new DispatchConfig.Builder(); - cc.getSearch().getConfig(builder); - - DispatchConfig cfg = new DispatchConfig(builder); - if (useAdaptiveDispatch) { - assertEquals(DispatchConfig.DistributionPolicy.ADAPTIVE, cfg.distributionPolicy()); - } else { - assertEquals(DispatchConfig.DistributionPolicy.ROUNDROBIN, cfg.distributionPolicy()); - } - } - - @Test - public void default_dispatch_controlled_by_properties() { - verifyRoundRobinPropertiesControl(false); - verifyRoundRobinPropertiesControl(true); - } - @Test public void default_topKprobability_controlled_by_properties() { verifyTopKProbabilityPropertiesControl(1.0); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java index 852844fe451..d4f4f85ac94 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java @@ -65,7 +65,7 @@ public class ClusterTest { assertEquals(0.23, config.minWaitAfterCoverageFactor(), DELTA); assertEquals(0.58, config.maxWaitAfterCoverageFactor(), DELTA); assertEquals(2, config.searchableCopies()); - assertEquals(DispatchConfig.DistributionPolicy.ROUNDROBIN, config.distributionPolicy()); + assertEquals(DispatchConfig.DistributionPolicy.ADAPTIVE, config.distributionPolicy()); } @Test @@ -74,7 +74,7 @@ public class ClusterTest { "", joinLines( "<max-hits-per-partition>77</max-hits-per-partition>", - "<dispatch-policy>adaptive</dispatch-policy>", + "<dispatch-policy>round-robin</dispatch-policy>", "<min-group-coverage>13</min-group-coverage>", "<min-active-docs-coverage>93</min-active-docs-coverage>"), false); @@ -84,7 +84,7 @@ public class ClusterTest { assertEquals(2, config.searchableCopies()); assertEquals(93.0, config.minActivedocsPercentage(), DELTA); assertEquals(13.0, config.minGroupCoverage(), DELTA); - assertEquals(DispatchConfig.DistributionPolicy.ADAPTIVE, config.distributionPolicy()); + assertEquals(DispatchConfig.DistributionPolicy.ROUNDROBIN, config.distributionPolicy()); assertEquals(77, config.maxHitsPerNode()); } @@ -96,7 +96,7 @@ public class ClusterTest { cluster.getSearch().getConfig(builder); DispatchConfig config = new DispatchConfig(builder); assertEquals(2, config.searchableCopies()); - assertEquals(DispatchConfig.DistributionPolicy.ROUNDROBIN, config.distributionPolicy()); + assertEquals(DispatchConfig.DistributionPolicy.ADAPTIVE, config.distributionPolicy()); assertEquals(0, config.maxNodesDownPerGroup()); assertEquals(1.0, config.maxWaitAfterCoverageFactor(), DELTA); assertEquals(0, config.minWaitAfterCoverageFactor(), DELTA); diff --git a/configdefinitions/src/vespa/dispatch.def b/configdefinitions/src/vespa/dispatch.def index 0776e648ad7..b0601196039 100644 --- a/configdefinitions/src/vespa/dispatch.def +++ b/configdefinitions/src/vespa/dispatch.def @@ -14,7 +14,7 @@ minGroupCoverage double default=100 maxNodesDownPerGroup int default=0 # Distribution policy for group selection -distributionPolicy enum { ROUNDROBIN, ADAPTIVE } default=ROUNDROBIN +distributionPolicy enum { ROUNDROBIN, ADAPTIVE } default=ADAPTIVE ## Maximum number of hits that will be requested from a single node ## in this dataset. If not set, there is no limit. Using this option 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 6069aaaa484..e4a52f6c3b8 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 @@ -146,7 +146,6 @@ public class ModelContextImpl implements ModelContext { private final Set<ContainerEndpoint> endpoints; private final boolean isBootstrap; private final boolean isFirstTimeDeployment; - private final boolean useAdaptiveDispatch; private final double defaultTopKprobability; private final boolean useDistributorBtreeDb; private final boolean useThreePhaseUpdates; @@ -184,8 +183,6 @@ public class ModelContextImpl implements ModelContext { this.endpoints = endpoints; this.isBootstrap = isBootstrap; this.isFirstTimeDeployment = isFirstTimeDeployment; - this.useAdaptiveDispatch = Flags.USE_ADAPTIVE_DISPATCH.bindTo(flagSource) - .with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value(); this.endpointCertificateSecrets = endpointCertificateSecrets; defaultTermwiseLimit = Flags.DEFAULT_TERM_WISE_LIMIT.bindTo(flagSource) .with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value(); @@ -243,9 +240,6 @@ public class ModelContextImpl implements ModelContext { public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } @Override - public boolean useAdaptiveDispatch() { return useAdaptiveDispatch; } - - @Override public Optional<EndpointCertificateSecrets> endpointCertificateSecrets() { return endpointCertificateSecrets; } @Override diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java index 3b8343fc6a4..5f50fe45db6 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java @@ -87,7 +87,6 @@ public class ModelContextImplTest { assertEquals(new Version(8), context.wantedNodeVespaVersion()); assertEquals(1.0, context.properties().defaultTermwiseLimit(), 0.0); assertEquals(1.0, context.properties().defaultTopKProbability(), 0.0); - assertFalse(context.properties().useAdaptiveDispatch()); } } 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 64d94608c24..d8d726cfb36 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -109,12 +109,6 @@ public class Flags { "Takes effect on restart of Docker container", NODE_TYPE, APPLICATION_ID, HOSTNAME); - public static final UnboundBooleanFlag USE_ADAPTIVE_DISPATCH = defineFeatureFlag( - "use-adaptive-dispatch", false, - "Should adaptive dispatch be used over round robin", - "Takes effect at redeployment", - ZONE_ID, APPLICATION_ID); - public static final UnboundIntFlag REBOOT_INTERVAL_IN_DAYS = defineIntFlag( "reboot-interval-in-days", 30, "No reboots are scheduled 0x-1x reboot intervals after the previous reboot, while reboot is " + |