summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-01-30 23:26:55 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2018-01-30 23:26:55 +0100
commit6f1c947bbbbc8f4b0c6b63d564ac2d9294cf13a8 (patch)
treedfdebb3580c95af2576d49f7cdd6624db478a2e7 /config-model
parent7923c31a91388782f6f6b169358a6cecdf63d2fc (diff)
Use maxsize-percent for giving percentage.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java3
-rw-r--r--config-model/src/main/resources/schema/content.rnc1
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java21
4 files changed, 26 insertions, 1 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 06f4e1cb2e9..d7d9517a98b 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
@@ -220,6 +220,8 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui
for (Element e : XML.getChildren(spec)) {
if (equals("maxsize", e)) {
c.maxSize = asLong(e);
+ } else if (equals("maxsize-percent", e)) {
+ c.maxSizePercent = asDouble(e);
} else if (equals("maxentries", e)) {
parent.deployLogger().log(Level.WARNING, "Element 'maxentries is deprecated and ignored. Will only limit by size.");
} else if (equals("initialentries", e)) {
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 2c1c5cd83ce..f29c7ade816 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
@@ -243,6 +243,7 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P
public static class Component {
public Long maxSize = null;
+ public Double maxSizePercent = null;
public Long initialEntries = null;
public Compression compression = null;
private final boolean outputInt;
@@ -257,9 +258,11 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P
public void getConfig(ProtonConfig.Summary.Cache.Builder cache) {
if (outputInt) {
+ if (maxSizePercent !=null) cache.maxbytes(-maxSizePercent.longValue());
if (maxSize!=null) cache.maxbytes(maxSize.intValue());
if (initialEntries!=null) cache.initialentries(initialEntries.intValue());
} else {
+ if (maxSizePercent !=null) cache.maxbytes(-maxSizePercent.longValue());
if (maxSize!=null) cache.maxbytes(maxSize);
if (initialEntries!=null) cache.initialentries(initialEntries);
}
diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc
index ffbf1a929bc..a5c75bc0150 100644
--- a/config-model/src/main/resources/schema/content.rnc
+++ b/config-model/src/main/resources/schema/content.rnc
@@ -337,6 +337,7 @@ Tuning = element tuning {
element store {
element cache {
element maxsize { xsd:nonNegativeInteger }? &
+ element maxsize-percent { xsd:double { minInclusive = "0.0" maxInclusive = "50.0" } }? &
element initialentries { xsd:nonNegativeInteger }? &
element maxentries { xsd:nonNegativeInteger }? &
TuningCompression?
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 cbee943172f..a2eccbcb583 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
@@ -3,7 +3,6 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.CollectionUtil;
import com.yahoo.config.ConfigInstance;
-import com.yahoo.vespa.config.search.core.PartitionsConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.text.StringUtilities;
@@ -176,6 +175,7 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest {
"<store>",
"<cache>",
"<maxsize>128</maxsize>",
+ "<maxsize-percent>30.7</maxsize-percent>",
"<initialentries>64</initialentries>",
"<compression>",
"<type>none</type>",
@@ -199,6 +199,7 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest {
assertEquals(Tuning.SearchNode.IoType.DIRECTIO, t.searchNode.summary.io.write);
assertEquals(Tuning.SearchNode.IoType.DIRECTIO, t.searchNode.summary.io.read);
assertEquals(128, t.searchNode.summary.store.cache.maxSize.longValue());
+ assertEquals(30.7, t.searchNode.summary.store.cache.maxSizePercent.doubleValue(), DELTA);
assertEquals(Tuning.SearchNode.Summary.Store.Compression.Type.NONE,
t.searchNode.summary.store.cache.compression.type);
assertEquals(3, t.searchNode.summary.store.cache.compression.level.intValue());
@@ -224,6 +225,24 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest {
}
@Test
+ public void requireThatWeCanGiveSummaryCacheSizeInPercentage() {
+ Tuning t = createTuning(parseXml("<summary>",
+ "<store>",
+ "<cache>",
+ "<maxsize-percent>30.7</maxsize-percent>",
+ "</cache>",
+ "</store>",
+ "</summary>"));
+
+ assertNull(t.searchNode.summary.store.cache.maxSize);
+ assertEquals(30.7, t.searchNode.summary.store.cache.maxSizePercent.doubleValue(),DELTA);
+
+ String cfg = getProtonCfg(t);
+ assertThat(cfg, containsString("summary.cache.maxbytes -30"));
+ }
+
+
+ @Test
public void requireThatWeCanParseInitializeTag() {
Tuning t = createTuning(parseXml("<initialize>",
"<threads>7</threads>",