diff options
author | Harald Musum <musum@verizonmedia.com> | 2023-07-20 12:08:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-20 12:08:34 +0200 |
commit | a9c9f581633688cea71b30a4585314a7318578b9 (patch) | |
tree | 9c6fb4a7dfa4c339e6ac264549099a21619ed33f | |
parent | 55965f0014ebcf000b680e5464fa7ee7c3c06029 (diff) | |
parent | db065760955ba41e9a37831b28a0bd848eb48a0b (diff) |
Merge pull request #27828 from vespa-engine/hmusum/throw-if-not-found-in-zk
Throw if file reference or vespa version not found for session in zk
4 files changed, 10 insertions, 13 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 b627fe9ba3b..df1fdddf409 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(Optional.ofNullable(applicationPackageReference)); + sessionZooKeeperClient.writeApplicationPackageReference(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 ae87a0dd182..94745be9d2a 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(Optional.of(fileReference)); + zooKeeperClient.writeApplicationPackageReference(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 23b6fe075fa..e2e5e2bcce4 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,7 +3,6 @@ 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; @@ -38,6 +37,7 @@ 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,16 +175,14 @@ public class SessionZooKeeperClient { .orElseThrow(() -> new NotFoundException("Could not find application id for session " + sessionId)); } - void writeApplicationPackageReference(Optional<FileReference> applicationPackageReference) { - applicationPackageReference.ifPresent( - reference -> curator.set(applicationPackageReferencePath(), Utf8.toBytes(reference.value()))); + void writeApplicationPackageReference(FileReference applicationPackageReference) { + curator.set(applicationPackageReferencePath(), Utf8.toBytes(applicationPackageReference.value())); } FileReference readApplicationPackageReference() { Optional<byte[]> data = curator.getData(applicationPackageReferencePath()); - if (data.isEmpty()) return null; // This should not happen. - - return new FileReference(Utf8.toString(data.get())); + return new FileReference(Utf8.toString( + data.orElseThrow(() -> new IllegalArgumentException("No application package reference found")))); } private Path applicationPackageReferencePath() { @@ -228,9 +226,8 @@ public class SessionZooKeeperClient { } public Version readVespaVersion() { - 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); + return curator.getData(versionPath()).map(d -> new Version( + Utf8.toString(d))).orElseThrow(() -> new IllegalArgumentException("No vespa version found")); } 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 4a7aeafab7e..e5b44857685 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(Optional.of(testRef)); + zkc.writeApplicationPackageReference(testRef); assertEquals(testRef, zkc.readApplicationPackageReference()); } |