aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon.hallingstad@gmail.com>2023-03-24 08:29:34 +0100
committerGitHub <noreply@github.com>2023-03-24 08:29:34 +0100
commit6db94ff887b65b10b8c4a8ce10c0d2e195bc0c0a (patch)
tree98870aea796ad0866f33edaa557ae886812ecb23
parent534eaf999b73c530da9190866cb55095c0dc82bf (diff)
parent8c2ee2fda704ad246ec5c99e600d84b59d4f41fd (diff)
Merge pull request #26555 from vespa-engine/hmusum/add-config-for-barrier-wait-for-all
Add config for barrierWaitForAllTimeout
-rw-r--r--configdefinitions/src/vespa/configserver.def4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java17
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java5
8 files changed, 20 insertions, 31 deletions
diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def
index eaeea794a28..5b8653d1a19 100644
--- a/configdefinitions/src/vespa/configserver.def
+++ b/configdefinitions/src/vespa/configserver.def
@@ -13,6 +13,9 @@ zookeeperserver[].port int default=2181
# ZK write timeout in seconds, must be long enough to write application packages to other nodes
zookeeper.barrierTimeout long default=360
zookeeperLocalhostAffinity bool default=true
+sessionLifetime long default=3600 # in seconds
+# How long to wait for all ZooKeeper servers to reach barrier after quorum has reached barrier. In seconds
+barrierWaitForAllTimeout long default=1
# Directories
configModelPluginDir[] string
@@ -25,7 +28,6 @@ fileReferencesDir string default="var/db/vespa/filedistribution/"
maxApplicationPackageSize long default=8589934592
# Misc
-sessionLifetime long default=3600 # in seconds
masterGeneration long default=0
multitenant bool default=false
numDelayedResponseThreads int default=1
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
index 91f24be3da3..d33dcea5c69 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
@@ -13,7 +13,6 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
@@ -32,7 +31,6 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.secretstore.SecretStore;
import com.yahoo.net.HostName;
import com.yahoo.path.Path;
-import com.yahoo.text.XML;
import com.yahoo.vespa.config.server.ConfigServerSpec;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.application.ApplicationSet;
@@ -53,7 +51,6 @@ import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.model.application.validation.BundleValidator;
import org.xml.sax.SAXException;
-
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.File;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index fa528ded54d..ff661fbcc74 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -892,7 +892,7 @@ public class SessionRepository {
return new SessionZooKeeperClient(curator,
tenantName,
sessionId,
- configserverConfig.serverId(),
+ configserverConfig,
fileDistributionFactory.createFileManager(getSessionAppDir(sessionId)),
maxNodeSize);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index b617ea71881..87793f526bd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
+import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
import com.yahoo.component.Vtag;
import com.yahoo.config.FileReference;
@@ -69,8 +70,6 @@ public class SessionZooKeeperClient {
private static final String OPERATOR_CERTIFICATES_PATH = "operatorCertificates";
private static final String CLOUD_ACCOUNT_PATH = "cloudAccount";
- private static final Duration barrierWaitForAll = Duration.ofSeconds(1);
-
private final Curator curator;
private final TenantName tenantName;
private final long sessionId;
@@ -79,21 +78,23 @@ public class SessionZooKeeperClient {
private final String serverId; // hostname
private final int maxNodeSize;
private final AddFileInterface fileManager;
+ private final Duration barrierWaitForAllTimeout;
- public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, String serverId, AddFileInterface fileManager, int maxNodeSize) {
+ public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, ConfigserverConfig configserverConfig, AddFileInterface fileManager, int maxNodeSize) {
this.curator = curator;
this.tenantName = tenantName;
this.sessionId = sessionId;
this.sessionPath = getSessionPath(tenantName, sessionId);
- this.serverId = serverId;
+ this.serverId = configserverConfig.serverId();
this.sessionStatusPath = sessionPath.append(ZKApplication.SESSIONSTATE_ZK_SUBPATH);
this.maxNodeSize = maxNodeSize;
this.fileManager = fileManager;
+ this.barrierWaitForAllTimeout = Duration.ofSeconds(configserverConfig.barrierWaitForAllTimeout());
}
// For testing only
- public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, String serverId) {
- this(curator, tenantName, sessionId, serverId, new MockFileManager(), 10 * 1024 * 1024);
+ public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, ConfigserverConfig configserverConfig) {
+ this(curator, tenantName, sessionId, configserverConfig, new MockFileManager(), 10 * 1024 * 1024);
}
public void writeStatus(Session.Status sessionStatus) {
@@ -136,11 +137,11 @@ public class SessionZooKeeperClient {
}
private CompletionWaiter createCompletionWaiter(String waiterNode) {
- return curator.createCompletionWaiter(sessionPath, waiterNode, serverId, barrierWaitForAll);
+ return curator.createCompletionWaiter(sessionPath, waiterNode, serverId, barrierWaitForAllTimeout);
}
private CompletionWaiter getCompletionWaiter(Path path) {
- return curator.getCompletionWaiter(path, serverId, barrierWaitForAll);
+ return curator.getCompletionWaiter(path, serverId, barrierWaitForAllTimeout);
}
/** Returns a transaction deleting this session on commit */
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index 253b0d7c101..950a21e5750 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -47,7 +47,6 @@ import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantMetaData;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.tenant.TestTenantRepository;
-import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -424,11 +423,10 @@ public class ApplicationRepositoryTest {
Instant session6CreateTime = clock.instant();
TenantFileSystemDirs tenantFileSystemDirs = new TenantFileSystemDirs(serverdb, tenantName);
Files.createDirectory(tenantFileSystemDirs.getUserApplicationDir(sessionId).toPath());
- String hostName = ConfigUtils.getCanonicalHostName();
LocalSession localSession2 = new LocalSession(tenantName,
sessionId,
FilesApplicationPackage.fromFile(testApp),
- new SessionZooKeeperClient(curator, tenantName, sessionId, hostName));
+ new SessionZooKeeperClient(curator, tenantName, sessionId, configserverConfig));
sessionRepository.addLocalSession(localSession2);
assertEquals(2, sessionRepository.getLocalSessions().size());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index cc6cd4d86e9..4af0881e200 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -43,7 +43,6 @@ import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.zookeeper.ZKApplication;
-import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import org.junit.Before;
@@ -407,10 +406,7 @@ public class SessionPreparerTest {
}
private SessionZooKeeperClient createSessionZooKeeperClient(long sessionId) {
- return new SessionZooKeeperClient(curator,
- applicationId().tenant(),
- sessionId,
- ConfigUtils.getCanonicalHostName());
+ return new SessionZooKeeperClient(curator, applicationId().tenant(), sessionId, configserverConfig);
}
private Path sessionPath(long sessionId) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
index 83ada4122c2..07d3aac5a52 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
@@ -26,8 +26,6 @@ import com.yahoo.vespa.config.server.http.InvalidApplicationException;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.tenant.TestTenantRepository;
-import com.yahoo.vespa.config.util.ConfigUtils;
-import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.model.VespaModel;
@@ -270,12 +268,10 @@ public class SessionRepositoryTest {
SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
tenantName,
sessionId,
- ConfigUtils.getCanonicalHostName());
+ applicationRepository.configserverConfig());
zkc.createNewSession(Instant.now());
- if (wait) {
- Curator.CompletionWaiter waiter = zkc.getUploadWaiter();
- waiter.awaitCompletion(Duration.ofSeconds(120));
- }
+ if (wait)
+ zkc.getUploadWaiter().awaitCompletion(Duration.ofSeconds(120));
}
private void assertStatusChange(long sessionId, Session.Status status) throws Exception {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
index ec27f2a00d9..4a7aeafab7e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
+import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.FileReference;
import com.yahoo.config.model.api.Quota;
import com.yahoo.config.model.api.TenantSecretStore;
@@ -9,14 +10,12 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.path.Path;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-
import java.time.Instant;
import java.util.List;
import java.util.Optional;
@@ -169,7 +168,7 @@ public class SessionZooKeeperClientTest {
SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
tenantName,
sessionId,
- ConfigUtils.getCanonicalHostName());
+ new ConfigserverConfig.Builder().build());
zkc.createNewSession(Instant.now());
return zkc;
}