diff options
author | bjormel <bjormel@yahooinc.com> | 2023-10-26 13:59:28 +0000 |
---|---|---|
committer | bjormel <bjormel@yahooinc.com> | 2023-10-26 13:59:28 +0000 |
commit | 567be9a1f6353cec41c23bfd1fcd46b4b2a4d2d7 (patch) | |
tree | 4664a743e166a5e11aee7b9acd70ad8ee2617612 /configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java | |
parent | e9058b555d4dfea2f6c872d9a677e8678b569569 (diff) | |
parent | bce3b8e926bf9da880172acbe1ba4b12d5e026d6 (diff) |
Merge branch 'master' into bjormel/aws-main-controllerbjormel/aws-main-controller
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()); } } |