aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-07-20 13:42:18 +0200
committerGitHub <noreply@github.com>2023-07-20 13:42:18 +0200
commit7379acea5ef3b26551c93098b0e7625fc9b4da9c (patch)
tree31dffaf59eda1a0533c00443b8f1bf4bb3d88e11
parent864ea85060baef9ec5f1e9037ac9496ff403f46b (diff)
Revert "Throw if file reference or vespa version not found for session in zk"
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.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/session/SessionZooKeeperClientTest.java2
4 files changed, 13 insertions, 10 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 df1fdddf409..b627fe9ba3b 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
@@ -121,7 +121,7 @@ public abstract class Session implements Comparable<Session> {
}
void setApplicationPackageReference(FileReference applicationPackageReference) {
- sessionZooKeeperClient.writeApplicationPackageReference(applicationPackageReference);
+ sessionZooKeeperClient.writeApplicationPackageReference(Optional.ofNullable(applicationPackageReference));
}
public void setVespaVersion(Version version) {
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 94745be9d2a..ae87a0dd182 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
@@ -394,7 +394,7 @@ public class SessionPreparer {
zkDeployer.deploy(applicationPackage, fileRegistryMap, allocatedHosts);
// Note: When changing the below you need to also change similar calls in SessionRepository.createSessionFromExisting()
zooKeeperClient.writeApplicationId(applicationId);
- zooKeeperClient.writeApplicationPackageReference(fileReference);
+ zooKeeperClient.writeApplicationPackageReference(Optional.of(fileReference));
zooKeeperClient.writeVespaVersion(vespaVersion);
zooKeeperClient.writeDockerImageRepository(dockerImageRepository);
zooKeeperClient.writeAthenzDomain(athenzDomain);
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 e2e5e2bcce4..23b6fe075fa 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
@@ -3,6 +3,7 @@ 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;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
@@ -37,7 +38,6 @@ import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
import org.apache.zookeeper.data.Stat;
-
import java.security.cert.X509Certificate;
import java.time.Duration;
import java.time.Instant;
@@ -175,14 +175,16 @@ public class SessionZooKeeperClient {
.orElseThrow(() -> new NotFoundException("Could not find application id for session " + sessionId));
}
- void writeApplicationPackageReference(FileReference applicationPackageReference) {
- curator.set(applicationPackageReferencePath(), Utf8.toBytes(applicationPackageReference.value()));
+ void writeApplicationPackageReference(Optional<FileReference> applicationPackageReference) {
+ applicationPackageReference.ifPresent(
+ reference -> curator.set(applicationPackageReferencePath(), Utf8.toBytes(reference.value())));
}
FileReference readApplicationPackageReference() {
Optional<byte[]> data = curator.getData(applicationPackageReferencePath());
- return new FileReference(Utf8.toString(
- data.orElseThrow(() -> new IllegalArgumentException("No application package reference found"))));
+ if (data.isEmpty()) return null; // This should not happen.
+
+ return new FileReference(Utf8.toString(data.get()));
}
private Path applicationPackageReferencePath() {
@@ -226,8 +228,9 @@ public class SessionZooKeeperClient {
}
public Version readVespaVersion() {
- return curator.getData(versionPath()).map(d -> new Version(
- Utf8.toString(d))).orElseThrow(() -> new IllegalArgumentException("No vespa version found"));
+ Optional<byte[]> data = curator.getData(versionPath());
+ // TODO: Empty version should not be possible any more - verify and remove
+ return data.map(d -> new Version(Utf8.toString(d))).orElse(Vtag.currentVersion);
}
public Optional<DockerImage> readDockerImageRepository() {
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 e5b44857685..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
@@ -134,7 +134,7 @@ public class SessionZooKeeperClientTest {
public void require_that_application_package_file_reference_can_be_written_and_read() {
final FileReference testRef = new FileReference("test-ref");
SessionZooKeeperClient zkc = createSessionZKClient(3);
- zkc.writeApplicationPackageReference(testRef);
+ zkc.writeApplicationPackageReference(Optional.of(testRef));
assertEquals(testRef, zkc.readApplicationPackageReference());
}