summaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-27 17:11:52 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-27 17:11:52 +0200
commit9b0f395b86a18d8dd363f025a528c97477b01fe5 (patch)
tree4de77634fa900599549b2cbfbd83da74bb2d7d9c /config-model/src
parentd9bec5f3fb608b5cd914196c04c041f7ca2ff8fb (diff)
Disable fsync on remote storage.
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java18
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java5
4 files changed, 29 insertions, 23 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 675cbb494dd..1dd5074aedb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -44,7 +44,7 @@ import static java.util.stream.Collectors.toList;
public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> implements ProtonConfig.Producer, DispatchConfig.Producer {
private final boolean flushOnShutdown;
- private final boolean syncTransactionLog;
+ private final Boolean syncTransactionLog;
/** If this is set up for streaming search, it is modelled as one search cluster per search definition */
private final Map<String, AbstractSearchCluster> clusters = new TreeMap<>();
@@ -106,7 +106,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
documentDefinitions,
globallyDistributedDocuments,
getFlushOnShutdown(flushOnShutdownElem),
- getSyncTransactionLog(syncTransactionLog, deployState),
+ syncTransactionLog,
combined);
ModelElement tuning = clusterElem.childByPath("engine.proton.tuning");
@@ -126,12 +126,6 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
}
return true;
}
- private boolean getSyncTransactionLog(Boolean syncTransactionLogElem, DeployState deployState) {
- if (syncTransactionLogElem != null) {
- return syncTransactionLogElem;
- }
- return true;
- }
private Double getQueryTimeout(ModelElement clusterElem) {
return clusterElem.childAsDouble("engine.proton.query-timeout");
@@ -206,7 +200,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
Map<String, NewDocumentType> documentDefinitions,
Set<NewDocumentType> globallyDistributedDocuments,
boolean flushOnShutdown,
- boolean syncTransactionLog,
+ Boolean syncTransactionLog,
boolean combined)
{
super(parent, "search");
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index 9f129f65281..ab8c36ae99d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -2,9 +2,9 @@
package com.yahoo.vespa.model.search;
import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig;
-import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.config.provision.NodeResources;
import com.yahoo.metrics.MetricsmanagerConfig;
import com.yahoo.searchlib.TranslogserverConfig;
import com.yahoo.vespa.config.content.LoadTypeConfig;
@@ -213,6 +213,12 @@ public class SearchNode extends AbstractService implements
@Override
public void getConfig(TranslogserverConfig.Builder builder) {
+ Optional<NodeResources> nodeResources = getSpecifiedNodeResources();
+ if (nodeResources.isPresent()) {
+ if (nodeResources.get().storageType() == NodeResources.StorageType.remote) {
+ builder.usefsync(false);
+ }
+ }
tls.getConfig(builder);
}
@@ -272,8 +278,9 @@ public class SearchNode extends AbstractService implements
// to make sure the node failer has done its work
builder.pruneremoveddocumentsage(4 * 24 * 3600 + 3600 + 60);
}
- if (getHostResource() != null && ! getHostResource().realResources().isUnspecified()) {
- var nodeResourcesTuning = new NodeResourcesTuning(getHostResource().realResources(),
+ Optional<NodeResources> nodeResources = getSpecifiedNodeResources();
+ if (nodeResources.isPresent()) {
+ var nodeResourcesTuning = new NodeResourcesTuning(nodeResources.get(),
tuning.map(Tuning::threadsPerSearch).orElse(1),
combined);
nodeResourcesTuning.getConfig(builder);
@@ -283,6 +290,10 @@ public class SearchNode extends AbstractService implements
}
}
+ private Optional<NodeResources> getSpecifiedNodeResources() {
+ return (getHostResource() != null) ? getHostResource().realResources().asOptional() : Optional.empty();
+ }
+
@Override
public HashMap<String, String> getDefaultMetricDimensions() {
HashMap<String, String> dimensions = new HashMap<>();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
index c24fa6396e7..ed12a161805 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
@@ -25,8 +25,8 @@ public class TransactionLogServer extends AbstractService {
}
}
- private final boolean useFsync;
- public TransactionLogServer(AbstractConfigProducer searchNode, String clusterName, boolean useFsync) {
+ private final Boolean useFsync;
+ public TransactionLogServer(AbstractConfigProducer searchNode, String clusterName, Boolean useFsync) {
super(searchNode, "transactionlogserver");
portsMeta.on(0).tag("tls");
this.useFsync = useFsync;
@@ -37,8 +37,8 @@ public class TransactionLogServer extends AbstractService {
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<TransactionLogServer> {
private final String clusterName;
- private final boolean useFsync;
- public Builder(String clusterName, boolean useFsync) {
+ private final Boolean useFsync;
+ public Builder(String clusterName, Boolean useFsync) {
this.clusterName = clusterName;
this.useFsync = useFsync;
}
@@ -79,11 +79,11 @@ public class TransactionLogServer extends AbstractService {
}
public void getConfig(TranslogserverConfig.Builder builder) {
- builder
- .listenport(getTlsPort())
- .basedir(getTlsDir())
- .usefsync(useFsync);
-
+ builder.listenport(getTlsPort())
+ .basedir(getTlsDir());
+ if (useFsync != null) {
+ builder.usefsync(useFsync);
+ }
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
index cb98dd3387e..620b5883d29 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
@@ -38,7 +38,7 @@ public class SearchNodeTest {
assertEquals(expected, cfg.basedir());
}
- private void prepare(MockRoot root, SearchNode node, boolean useFsync) {
+ private void prepare(MockRoot root, SearchNode node, Boolean useFsync) {
Host host = new Host(root, "mockhost");
TransactionLogServer tls = new TransactionLogServer(root, "mycluster", useFsync);
tls.setHostResource(new HostResource(host));
@@ -62,6 +62,7 @@ public class SearchNodeTest {
@Test
public void requireThatSyncIsHonoured() {
+ assertTrue(getTlsConfig(new TestProperties(), null).usefsync());
assertTrue(getTlsConfig(new TestProperties(), true).usefsync());
assertFalse(getTlsConfig(new TestProperties(), false).usefsync());
}
@@ -98,7 +99,7 @@ public class SearchNodeTest {
return new MockRoot("", new DeployState.Builder().properties(properties).build());
}
- private TranslogserverConfig getTlsConfig(ModelContext.Properties properties, boolean useFsync) {
+ private TranslogserverConfig getTlsConfig(ModelContext.Properties properties, Boolean useFsync) {
MockRoot root = createRoot(properties);
SearchNode node = createSearchNode(root);
prepare(root, node, useFsync);