summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2022-12-05 12:38:23 +0100
committerGitHub <noreply@github.com>2022-12-05 12:38:23 +0100
commit74ccd2b55870b17a10ee1513476aac73e2e228e2 (patch)
tree829c75d2f05907efd349921e3ffa6c33ae352004 /configserver
parent8890a936e4fddea023fcb94b2841f5b4208ad908 (diff)
Revert "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, 105 insertions, 64 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 bfa3dbb966c..903323fcd58 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,6 +117,46 @@ 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()
@@ -151,7 +191,7 @@ public abstract class Session implements Comparable<Session> {
}
public Transaction createDeactivateTransaction() {
- return sessionZooKeeperClient.createWriteStatusTransaction(Status.DEACTIVATE);
+ return createSetStatusTransaction(Status.DEACTIVATE);
}
public List<TenantSecretStore> getTenantSecretStores() {
@@ -166,6 +206,10 @@ 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; }
@@ -186,7 +230,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 da812b9be7d..6589d9d721a 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,9 +17,12 @@ 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;
@@ -47,11 +50,13 @@ 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;
@@ -337,16 +342,23 @@ 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,
- fileReference,
+ preprocessedApplicationPackage,
+ applicationId,
+ tags,
+ filereference,
dockerImageRepository,
vespaVersion,
logger,
prepareResult.getFileRegistries(),
prepareResult.allocatedHosts(),
- athenzDomain);
+ athenzDomain,
+ params.quota(),
+ params.tenantSecretStores(),
+ params.operatorCertificates(),
+ params.cloudAccount());
checkTimeout("write state to zookeeper");
}
@@ -372,34 +384,41 @@ public class SessionPreparer {
return List.copyOf(endpoints);
}
+ }
- 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);
- }
+ 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);
}
-
}
/** 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 1fc4b0f6edc..ac33927bad9 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);
- 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());
+ // 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());
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 4ea3212e098..9218b03af1e 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,28 +199,6 @@ 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);
}