diff options
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java index 46acb8c7ef1..f71476c5770 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java @@ -1,3 +1,4 @@ +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.session; import com.yahoo.component.Version; @@ -10,11 +11,15 @@ import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.DataplaneToken; import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.flags.BooleanFlag; +import com.yahoo.yolean.Exceptions; import java.security.cert.X509Certificate; import java.time.Instant; import java.util.List; import java.util.Optional; +import java.util.logging.Logger; + +import static java.util.logging.Level.WARNING; /** * Serialization and deserialization of session data to/from ZooKeeper. @@ -22,6 +27,8 @@ import java.util.Optional; */ public class SessionSerializer { + private static final Logger log = Logger.getLogger(SessionSerializer.class.getName()); + void write(SessionZooKeeperClient zooKeeperClient, ApplicationId applicationId, Instant created, Optional<FileReference> fileReference, Optional<DockerImage> dockerImageRepository, Version vespaVersion, Optional<AthenzDomain> athenzDomain, Optional<Quota> quota, @@ -53,20 +60,29 @@ public class SessionSerializer { } SessionData read(SessionZooKeeperClient zooKeeperClient, BooleanFlag readSessionData) { - if (readSessionData.value()) - return zooKeeperClient.readSessionData(); - else - return new SessionData(zooKeeperClient.readApplicationId(), - zooKeeperClient.readApplicationPackageReference(), - zooKeeperClient.readVespaVersion(), - zooKeeperClient.readCreateTime(), - zooKeeperClient.readDockerImageRepository(), - zooKeeperClient.readAthenzDomain(), - zooKeeperClient.readQuota(), - zooKeeperClient.readTenantSecretStores(), - zooKeeperClient.readOperatorCertificates(), - zooKeeperClient.readCloudAccount(), - zooKeeperClient.readDataplaneTokens()); + if (readSessionData.value() && zooKeeperClient.sessionDataExists()) + try { + return zooKeeperClient.readSessionData(); + } catch (Exception e) { + log.log(WARNING, "Unable to read session data for session " + zooKeeperClient.sessionId() + + ": " + Exceptions.toMessageString(e)); + } + + return readSessionDataFromLegacyPaths(zooKeeperClient); + } + + private static SessionData readSessionDataFromLegacyPaths(SessionZooKeeperClient zooKeeperClient) { + return new SessionData(zooKeeperClient.readApplicationId(), + zooKeeperClient.readApplicationPackageReference(), + zooKeeperClient.readVespaVersion(), + zooKeeperClient.readCreateTime(), + zooKeeperClient.readDockerImageRepository(), + zooKeeperClient.readAthenzDomain(), + zooKeeperClient.readQuota(), + zooKeeperClient.readTenantSecretStores(), + zooKeeperClient.readOperatorCertificates(), + zooKeeperClient.readCloudAccount(), + zooKeeperClient.readDataplaneTokens()); } } |