diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-29 09:33:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-29 09:33:10 +0100 |
commit | 8a668436d9f014f1d47f6f10546abc9ad82073cc (patch) | |
tree | 5ccf0e9d07613eb3f6186f801a967c0a28e108c1 /config-model | |
parent | d4e02b6d0fed6d5e7386882eaaf2fd4588fbba7f (diff) | |
parent | 4d1e2dd83e2f779043cc06e7b5a7d985c7107397 (diff) |
Merge pull request #8271 from vespa-engine/balder/override-pruning-of-removed-docs
Balder/override pruning of removed docs
Diffstat (limited to 'config-model')
4 files changed, 75 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java index 067d653ea40..67eafc6569e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java @@ -24,7 +24,7 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui if (equals("dispatch", e)) { handleDispatch(e, tuning); } else if (equals("searchnode", e)) { - handleSearchNode(deployState.getDeployLogger(), e, tuning); + handleSearchNode(e, tuning); } } return tuning; @@ -59,13 +59,13 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } } - private void handleSearchNode(DeployLogger deployLogger, Element spec, Tuning t) { + private void handleSearchNode(Element spec, Tuning t) { t.searchNode = new Tuning.SearchNode(); for (Element e : XML.getChildren(spec)) { if (equals("requestthreads", e)) { handleRequestThreads(e, t.searchNode); } else if (equals("flushstrategy", e)) { - handleFlushStrategy(deployLogger,e, t.searchNode); + handleFlushStrategy(e, t.searchNode); } else if (equals("resizing", e)) { handleResizing(e, t.searchNode); } else if (equals("index", e)) { @@ -73,11 +73,13 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } else if (equals("attribute", e)) { handleAttribute(e, t.searchNode); } else if (equals("summary", e)) { - handleSummary(deployLogger, e, t.searchNode); + handleSummary(e, t.searchNode); } else if (equals("initialize", e)) { handleInitialize(e, t.searchNode); } else if (equals("feeding", e)) { handleFeeding(e, t.searchNode); + } else if (equals("removed-db", e)) { + handleRemovedDB(e, t.searchNode); } } } @@ -96,15 +98,32 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } } - private void handleFlushStrategy(DeployLogger deployLogger, Element spec, Tuning.SearchNode sn) { + private void handleRemovedDB(Element spec, Tuning.SearchNode sn) { + sn.removedDB = new Tuning.SearchNode.RemovedDB(); + for (Element e : XML.getChildren(spec)) { + if (equals("prune", e)) { + sn.removedDB.prune = new Tuning.SearchNode.RemovedDB.Prune(); + Tuning.SearchNode.RemovedDB.Prune prune = sn.removedDB.prune; + for (Element e2 : XML.getChildren(e)) { + if (equals("age", e2)) { + prune.age = asDouble(e2); + } else if (equals("interval", e2)) { + prune.interval = asDouble(e2); + } + } + } + } + } + + private void handleFlushStrategy(Element spec, Tuning.SearchNode sn) { for (Element e : XML.getChildren(spec)) { if (equals("native", e)) { - handleNativeStrategy(deployLogger, e, sn); + handleNativeStrategy(e, sn); } } } - private void handleNativeStrategy(DeployLogger deployLogger, Element spec, Tuning.SearchNode sn) { + private void handleNativeStrategy(Element spec, Tuning.SearchNode sn) { sn.strategy = new Tuning.SearchNode.FlushStrategy(); Tuning.SearchNode.FlushStrategy fs = sn.strategy; for (Element e : XML.getChildren(spec)) { @@ -186,7 +205,7 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } } - private void handleSummary(DeployLogger deployLogger, Element spec, Tuning.SearchNode sn) { + private void handleSummary(Element spec, Tuning.SearchNode sn) { sn.summary = new Tuning.SearchNode.Summary(); for (Element e : XML.getChildren(spec)) { if (equals("io", e)) { @@ -199,24 +218,24 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } } } else if (equals("store", e)) { - handleSummaryStore(deployLogger, e, sn.summary); + handleSummaryStore(e, sn.summary); } } } - private void handleSummaryStore(DeployLogger deployLogger, Element spec, Tuning.SearchNode.Summary s) { + private void handleSummaryStore(Element spec, Tuning.SearchNode.Summary s) { s.store = new Tuning.SearchNode.Summary.Store(); for (Element e : XML.getChildren(spec)) { if (equals("cache", e)) { s.store.cache = new Tuning.SearchNode.Summary.Store.Component(); - handleSummaryStoreComponent(deployLogger, e, s.store.cache); + handleSummaryStoreComponent(e, s.store.cache); } else if (equals("logstore", e)) { - handleSummaryLogStore(deployLogger, e, s.store); + handleSummaryLogStore(e, s.store); } } } - private void handleSummaryStoreComponent(DeployLogger deployLogger, Element spec, Tuning.SearchNode.Summary.Store.Component c) { + private void handleSummaryStoreComponent(Element spec, Tuning.SearchNode.Summary.Store.Component c) { for (Element e : XML.getChildren(spec)) { if (equals("maxsize", e)) { c.maxSize = asLong(e); @@ -241,7 +260,7 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui } } - private void handleSummaryLogStore(DeployLogger deployLogger, Element spec, Tuning.SearchNode.Summary.Store s) { + private void handleSummaryLogStore(Element spec, Tuning.SearchNode.Summary.Store s) { s.logStore = new Tuning.SearchNode.Summary.Store.LogStore(); for (Element e : XML.getChildren(spec)) { if (equals("maxfilesize", e)) { @@ -250,7 +269,7 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui s.logStore.minFileSizeFactor = asDouble(e); } else if (equals("chunk", e)) { s.logStore.chunk = new Tuning.SearchNode.Summary.Store.Component(true); - handleSummaryStoreComponent(deployLogger, e, s.logStore.chunk); + handleSummaryStoreComponent(e, s.logStore.chunk); } } } 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 a87a3d3e312..7bac61900d4 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 @@ -91,6 +91,26 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P } } + public static class RemovedDB implements ProtonConfig.Producer { + + public static class Prune implements ProtonConfig.Producer { + public Double age = null; + public Double interval = null; + + @Override + public void getConfig(ProtonConfig.Builder builder) { + if (age != null) builder.pruneremoveddocumentsage(age); + if (interval != null) builder.pruneremoveddocumentsinterval(interval); + } + } + + public Prune prune; + @Override + public void getConfig(ProtonConfig.Builder builder) { + if (prune != null) prune.getConfig(builder); + } + } + public static class FlushStrategy implements ProtonConfig.Producer { public Long totalMaxMemoryGain = null; public Double totalDiskBloatFactor = null; @@ -356,6 +376,7 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P public Summary summary = null; public Initialize initialize = null; public Feeding feeding = null; + public RemovedDB removedDB = null; @Override public void getConfig(ProtonConfig.Builder builder) { @@ -367,6 +388,7 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P if (summary != null) summary.getConfig(builder); if (initialize != null) initialize.getConfig(builder); if (feeding != null) feeding.getConfig(builder); + if (removedDB != null) removedDB.getConfig(builder); } } diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc index ae2af6618d7..7848968eece 100644 --- a/config-model/src/main/resources/schema/content.rnc +++ b/config-model/src/main/resources/schema/content.rnc @@ -352,6 +352,12 @@ Tuning = element tuning { }? & element feeding { element concurrency { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? + }? & + element removed-db { + element prune { + element age { xsd:double { minInclusive = "0.0" } }? & + element interval { xsd:double { minInclusive = "60.0" } }? + }? }? }? } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java index aa52a2b586e..f48c24ae123 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java @@ -155,6 +155,19 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest { } @Test + public void requireThatWeCanParseRemovedDBTag() { + Tuning t = createTuning(parseXml("<removed-db>", "<prune>", + "<age>19388</age>", + "<interval>193</interval>", + "</prune>", "</removed-db>")); + assertEquals(19388, t.searchNode.removedDB.prune.age, DELTA); + assertEquals(193, t.searchNode.removedDB.prune.interval, DELTA); + String cfg = getProtonCfg(t); + assertThat(cfg, containsString("pruneremoveddocumentsinterval 193")); + assertThat(cfg, containsString("pruneremoveddocumentsage 19388")); + } + + @Test public void requireThatWeCanParseAttributeTag() { Tuning t = createTuning(parseXml("<attribute>", "<io>", "<write>directio</write>", |