From 7379acea5ef3b26551c93098b0e7625fc9b4da9c Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Thu, 20 Jul 2023 13:42:18 +0200 Subject: Revert "Throw if file reference or vespa version not found for session in zk" --- .../com/yahoo/vespa/config/server/session/Session.java | 2 +- .../vespa/config/server/session/SessionPreparer.java | 2 +- .../config/server/session/SessionZooKeeperClient.java | 17 ++++++++++------- .../server/session/SessionZooKeeperClientTest.java | 2 +- 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 { } 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 applicationPackageReference) { + applicationPackageReference.ifPresent( + reference -> curator.set(applicationPackageReferencePath(), Utf8.toBytes(reference.value()))); } FileReference readApplicationPackageReference() { Optional 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 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 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()); } -- cgit v1.2.3