summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon.hallingstad@gmail.com>2022-12-05 11:00:23 +0100
committerGitHub <noreply@github.com>2022-12-05 11:00:23 +0100
commit7d0782d82a0f76a0aee3e1ef5042ee634d4b2236 (patch)
tree5ec1ce8537a23e85c0699fe4a14dd65b4caf4cbf /configserver
parent898582aa193954ee055f5fb5c7b2c643d1fcafdf (diff)
parent6cb2746d835b5599a6b7601c1037e6b4fdc20579 (diff)
Merge pull request #25107 from vespa-engine/hmusum/write-session-parameters-to-zk-in-one-place
Write session parameters to ZooKeeper in one place [run-systemtest]
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java48
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java77
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java22
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java22
4 files changed, 64 insertions, 105 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
index 903323fcd58..bfa3dbb966c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
@@ -117,46 +117,6 @@ public abstract class Session implements Comparable<Session> {
return sessionZooKeeperClient.readActivatedTime();
}
- public void setApplicationId(ApplicationId applicationId) {
- sessionZooKeeperClient.writeApplicationId(applicationId);
- }
-
- public void setTags(Tags tags) {
- sessionZooKeeperClient.writeTags(tags);
- }
-
- void setApplicationPackageReference(FileReference applicationPackageReference) {
- sessionZooKeeperClient.writeApplicationPackageReference(Optional.ofNullable(applicationPackageReference));
- }
-
- public void setVespaVersion(Version version) {
- sessionZooKeeperClient.writeVespaVersion(version);
- }
-
- public void setDockerImageRepository(Optional<DockerImage> dockerImageRepository) {
- sessionZooKeeperClient.writeDockerImageRepository(dockerImageRepository);
- }
-
- public void setAthenzDomain(Optional<AthenzDomain> athenzDomain) {
- sessionZooKeeperClient.writeAthenzDomain(athenzDomain);
- }
-
- public void setQuota(Optional<Quota> quota) {
- sessionZooKeeperClient.writeQuota(quota);
- }
-
- public void setTenantSecretStores(List<TenantSecretStore> tenantSecretStores) {
- sessionZooKeeperClient.writeTenantSecretStores(tenantSecretStores);
- }
-
- public void setOperatorCertificates(List<X509Certificate> operatorCertificates) {
- sessionZooKeeperClient.writeOperatorCertificates(operatorCertificates);
- }
-
- public void setCloudAccount(Optional<CloudAccount> cloudAccount) {
- sessionZooKeeperClient.writeCloudAccount(cloudAccount);
- }
-
/** Returns application id read from ZooKeeper. Will throw RuntimeException if not found */
public ApplicationId getApplicationId() {
return sessionZooKeeperClient.readApplicationId()
@@ -191,7 +151,7 @@ public abstract class Session implements Comparable<Session> {
}
public Transaction createDeactivateTransaction() {
- return createSetStatusTransaction(Status.DEACTIVATE);
+ return sessionZooKeeperClient.createWriteStatusTransaction(Status.DEACTIVATE);
}
public List<TenantSecretStore> getTenantSecretStores() {
@@ -206,10 +166,6 @@ public abstract class Session implements Comparable<Session> {
return sessionZooKeeperClient.readCloudAccount();
}
- private Transaction createSetStatusTransaction(Status status) {
- return sessionZooKeeperClient.createWriteStatusTransaction(status);
- }
-
// Note: Assumes monotonically increasing session ids
public boolean isNewerThan(long sessionId) { return getSessionId() > sessionId; }
@@ -230,7 +186,7 @@ public abstract class Session implements Comparable<Session> {
return getApplicationPackage().getFile(relativePath);
}
- Optional<ApplicationSet> applicationSet() { return Optional.empty(); };
+ Optional<ApplicationSet> applicationSet() { return Optional.empty(); }
private void markSessionEdited() {
setStatus(Session.Status.NEW);
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 6589d9d721a..da812b9be7d 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
@@ -17,12 +17,9 @@ import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
import com.yahoo.config.model.api.EndpointCertificateSecrets;
import com.yahoo.config.model.api.FileDistribution;
-import com.yahoo.config.model.api.Quota;
-import com.yahoo.config.model.api.TenantSecretStore;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.AthenzDomain;
-import com.yahoo.config.provision.CloudAccount;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.Tags;
import com.yahoo.config.provision.Zone;
@@ -50,13 +47,11 @@ 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;
import java.io.IOException;
import java.nio.file.Files;
-import java.security.cert.X509Certificate;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
@@ -342,23 +337,16 @@ public class SessionPreparer {
checkTimeout("making result from models");
}
- void writeStateZK(FileReference filereference) {
+ void writeStateZK(FileReference fileReference) {
log.log(Level.FINE, "Writing application package state to zookeeper");
writeStateToZooKeeper(sessionZooKeeperClient,
- preprocessedApplicationPackage,
- applicationId,
- tags,
- filereference,
+ fileReference,
dockerImageRepository,
vespaVersion,
logger,
prepareResult.getFileRegistries(),
prepareResult.allocatedHosts(),
- athenzDomain,
- params.quota(),
- params.tenantSecretStores(),
- params.operatorCertificates(),
- params.cloudAccount());
+ athenzDomain);
checkTimeout("write state to zookeeper");
}
@@ -384,41 +372,34 @@ public class SessionPreparer {
return List.copyOf(endpoints);
}
- }
- private void writeStateToZooKeeper(SessionZooKeeperClient zooKeeperClient,
- ApplicationPackage applicationPackage,
- ApplicationId applicationId,
- Tags tags,
- FileReference fileReference,
- Optional<DockerImage> dockerImageRepository,
- Version vespaVersion,
- DeployLogger deployLogger,
- Map<Version, FileRegistry> fileRegistryMap,
- AllocatedHosts allocatedHosts,
- Optional<AthenzDomain> athenzDomain,
- Optional<Quota> quota,
- List<TenantSecretStore> tenantSecretStores,
- List<X509Certificate> operatorCertificates,
- Optional<CloudAccount> cloudAccount) {
- ZooKeeperDeployer zkDeployer = zooKeeperClient.createDeployer(deployLogger);
- try {
- zkDeployer.deploy(applicationPackage, fileRegistryMap, allocatedHosts);
- // Note: When changing the below you need to also change similar calls in SessionRepository.createSessionFromExisting()
- zooKeeperClient.writeApplicationId(applicationId);
- zooKeeperClient.writeTags(tags);
- zooKeeperClient.writeApplicationPackageReference(Optional.of(fileReference));
- zooKeeperClient.writeVespaVersion(vespaVersion);
- zooKeeperClient.writeDockerImageRepository(dockerImageRepository);
- zooKeeperClient.writeAthenzDomain(athenzDomain);
- zooKeeperClient.writeQuota(quota);
- zooKeeperClient.writeTenantSecretStores(tenantSecretStores);
- zooKeeperClient.writeOperatorCertificates(operatorCertificates);
- zooKeeperClient.writeCloudAccount(cloudAccount);
- } catch (RuntimeException | IOException e) {
- zkDeployer.cleanup();
- throw new RuntimeException("Error preparing session", e);
+ private void writeStateToZooKeeper(SessionZooKeeperClient zooKeeperClient,
+ FileReference fileReference,
+ Optional<DockerImage> dockerImageRepository,
+ Version vespaVersion,
+ DeployLogger deployLogger,
+ Map<Version, FileRegistry> fileRegistryMap,
+ AllocatedHosts allocatedHosts,
+ Optional<AthenzDomain> athenzDomain) {
+ ZooKeeperDeployer zkDeployer = zooKeeperClient.createDeployer(deployLogger);
+ try {
+ zkDeployer.deploy(applicationPackage, fileRegistryMap, allocatedHosts);
+ zooKeeperClient.writeSessionParameters(applicationId,
+ tags,
+ fileReference,
+ dockerImageRepository,
+ vespaVersion,
+ athenzDomain,
+ params.quota(),
+ params.tenantSecretStores(),
+ params.operatorCertificates(),
+ params.cloudAccount());
+ } catch (RuntimeException | IOException e) {
+ zkDeployer.cleanup();
+ throw new RuntimeException("Error preparing session", e);
+ }
}
+
}
/** The result of preparation over all model versions */
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 ac33927bad9..1fc4b0f6edc 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
@@ -274,17 +274,17 @@ public class SessionRepository {
internalRedeploy,
timeoutBudget,
deployLogger);
- // Note: Setters below need to be kept in sync with calls in SessionPreparer.writeStateToZooKeeper()
- session.setApplicationId(existingApplicationId);
- session.setTags(existingTags);
- session.setApplicationPackageReference(existingSession.getApplicationPackageReference());
- session.setVespaVersion(existingSession.getVespaVersion());
- session.setDockerImageRepository(existingSession.getDockerImageRepository());
- session.setAthenzDomain(existingSession.getAthenzDomain());
- session.setQuota(existingSession.getQuota());
- session.setTenantSecretStores(existingSession.getTenantSecretStores());
- session.setOperatorCertificates(existingSession.getOperatorCertificates());
- session.setCloudAccount(existingSession.getCloudAccount());
+ SessionZooKeeperClient sessionZooKeeperClient = createSessionZooKeeperClient(session.getSessionId());
+ sessionZooKeeperClient.writeSessionParameters(existingApplicationId,
+ existingTags,
+ existingSession.getApplicationPackageReference(),
+ existingSession.getDockerImageRepository(),
+ existingSession.getVespaVersion(),
+ existingSession.getAthenzDomain(),
+ existingSession.getQuota(),
+ existingSession.getTenantSecretStores(),
+ existingSession.getOperatorCertificates(),
+ existingSession.getCloudAccount());
return session;
}
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 9218b03af1e..4ea3212e098 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
@@ -199,6 +199,28 @@ public class SessionZooKeeperClient {
return new FileReference(Utf8.toString(data.get()));
}
+ void writeSessionParameters(ApplicationId applicationId,
+ Tags tags,
+ FileReference fileReference,
+ Optional<DockerImage> dockerImageRepository,
+ Version vespaVersion,
+ Optional<AthenzDomain> athenzDomain,
+ Optional<Quota> quota,
+ List<TenantSecretStore> tenantSecretStores,
+ List<X509Certificate> operatorCertificates,
+ Optional<CloudAccount> cloudAccount) {
+ writeApplicationId(applicationId);
+ writeTags(tags);
+ writeApplicationPackageReference(Optional.of(fileReference));
+ writeVespaVersion(vespaVersion);
+ writeDockerImageRepository(dockerImageRepository);
+ writeAthenzDomain(athenzDomain);
+ writeQuota(quota);
+ writeTenantSecretStores(tenantSecretStores);
+ writeOperatorCertificates(operatorCertificates);
+ writeCloudAccount(cloudAccount);
+ }
+
private Path applicationPackageReferencePath() {
return sessionPath.append(APPLICATION_PACKAGE_REFERENCE_PATH);
}