From 8c2ee2fda704ad246ec5c99e600d84b59d4f41fd Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Thu, 23 Mar 2023 13:20:15 +0100 Subject: Add config for barrierWaitForAllTimeout --- .../vespa/config/server/session/SessionPreparer.java | 3 --- .../vespa/config/server/session/SessionRepository.java | 2 +- .../config/server/session/SessionZooKeeperClient.java | 17 +++++++++-------- .../vespa/config/server/ApplicationRepositoryTest.java | 4 +--- .../config/server/session/SessionPreparerTest.java | 6 +----- .../config/server/session/SessionRepositoryTest.java | 10 +++------- .../server/session/SessionZooKeeperClientTest.java | 5 ++--- 7 files changed, 17 insertions(+), 30 deletions(-) (limited to 'configserver') 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; } -- cgit v1.2.3