summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahoo-inc.com>2016-09-05 17:23:14 +0200
committerTor Brede Vekterli <vekterli@yahoo-inc.com>2016-09-05 17:23:14 +0200
commit987061913e6290f1d3684a5e89a63bb4723999a9 (patch)
treebb6198c3497fb8cc95e9809eb0b7a5fe2b69a5b5 /config-model
parent192ba0c1978b792e55c597f9a7ad4cd03b6326c4 (diff)
Only schedule bucket integrity checker runs when on VDS
Non-VDS providers today do not implement explicit bucket integrity checking, so no point in using CPU time on what's effectively a bunch of no-ops.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java13
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java7
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java41
3 files changed, 56 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
index 69bf29ca307..14138c6413d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.vespa.config.content.core.StorIntegritycheckerConfig;
import com.yahoo.config.model.ConfigModelUtils;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
+import com.yahoo.vespa.model.content.cluster.ContentCluster;
/**
* Serves stor-integritychecker config for storage clusters.
@@ -11,7 +12,11 @@ import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
public class IntegrityCheckerProducer implements StorIntegritycheckerConfig.Producer {
public static class Builder {
- protected IntegrityCheckerProducer build(ModelElement clusterElem) {
+ protected IntegrityCheckerProducer build(ContentCluster cluster, ModelElement clusterElem) {
+ if (!cluster.isMemfilePersistence()) {
+ return integrityCheckerDisabled();
+ }
+
ModelElement tuning = clusterElem.getChild("tuning");
if (tuning == null) {
@@ -63,6 +68,12 @@ public class IntegrityCheckerProducer implements StorIntegritycheckerConfig.Prod
this.weeklyCycle = weeklyCycle;
}
+ private static IntegrityCheckerProducer integrityCheckerDisabled() {
+ // Leave start/start times at default, but mark each day of the week as
+ // not allowing the integrity checker to be run.
+ return new IntegrityCheckerProducer(null, null, "-------");
+ }
+
@Override
public void getConfig(StorIntegritycheckerConfig.Builder builder) {
if (startTime != null) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
index 6c9cbadd21a..4f332c88702 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
@@ -32,12 +32,13 @@ public class StorageCluster extends AbstractConfigProducer<StorageNode>
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<StorageCluster> {
@Override
protected StorageCluster doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
- ModelElement clusterElem = new ModelElement(producerSpec);
+ final ModelElement clusterElem = new ModelElement(producerSpec);
+ final ContentCluster cluster = (ContentCluster)ancestor;
return new StorageCluster(ancestor,
ContentCluster.getClusterName(clusterElem),
- new FileStorProducer.Builder().build(((ContentCluster)ancestor), clusterElem),
- new IntegrityCheckerProducer.Builder().build(clusterElem),
+ new FileStorProducer.Builder().build(cluster, clusterElem),
+ new IntegrityCheckerProducer.Builder().build(cluster, clusterElem),
new StorServerProducer.Builder().build(clusterElem),
new StorVisitorProducer.Builder().build(clusterElem),
new PersistenceProducer.Builder().build(clusterElem));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
index 990c0e10927..64ed53795b9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
@@ -151,11 +151,14 @@ public class StorageClusterTest {
}
@Test
- public void testMaintenance() {
+ public void maintenance_tuning_is_honored_for_vds_provider() {
StorIntegritycheckerConfig.Builder builder = new StorIntegritycheckerConfig.Builder();
parse(
"<cluster id=\"bees\">\n" +
" <documents/>" +
+ " <engine>\n" +
+ " <vds/>\n" +
+ " </engine>\n" +
" <tuning>" +
" <maintenance start=\"01:00\" stop=\"02:00\" high=\"tuesday\"/>\n" +
" </tuning>" +
@@ -172,6 +175,42 @@ public class StorageClusterTest {
}
@Test
+ public void integrity_checker_explicitly_disabled_when_not_running_with_vds_provider() {
+ StorIntegritycheckerConfig.Builder builder = new StorIntegritycheckerConfig.Builder();
+ parse(
+ "<cluster id=\"bees\">\n" +
+ " <documents/>" +
+ " <group>" +
+ " <node distribution-key=\"0\" hostalias=\"mockhost\"/>" +
+ " </group>" +
+ "</cluster>"
+ ).getConfig(builder);
+ StorIntegritycheckerConfig config = new StorIntegritycheckerConfig(builder);
+ // '-' --> don't run on the given week day
+ assertEquals("-------", config.weeklycycle());
+ }
+
+ @Test
+ public void integrity_checker_not_explicitly_disabled_when_running_with_vds_provider() {
+ StorIntegritycheckerConfig.Builder builder = new StorIntegritycheckerConfig.Builder();
+ parse(
+ "<cluster id=\"bees\">\n" +
+ " <documents/>" +
+ " <engine>\n" +
+ " <vds/>\n" +
+ " </engine>\n" +
+ " <group>" +
+ " <node distribution-key=\"0\" hostalias=\"mockhost\"/>" +
+ " </group>" +
+ "</cluster>"
+ ).getConfig(builder);
+ StorIntegritycheckerConfig config = new StorIntegritycheckerConfig(builder);
+ // No tuning element has been provided, but we should still get a default weeklycycle
+ // config generated since we're on VDS.
+ assertEquals("Rrrrrrr", config.weeklycycle());
+ }
+
+ @Test
public void testCapacity() {
Document doc = XML.getDocument(
"<cluster id=\"storage\">\n" +