aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionSerializer.java
diff options
context:
space:
mode:
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.java44
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());
}
}