From e354869c4ad9063c97e8c37417fc7c92673b3331 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 20 May 2020 15:25:46 +0200 Subject: Use remote session repo to find active session Active session is not necessarily a local session, it might have been created on another config server. --- .../vespa/config/server/session/RemoteSession.java | 46 +++++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java index 9da3ad2fd7a..68c00cafd07 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java @@ -1,11 +1,15 @@ // Copyright 2017 Yahoo Holdings. 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; +import com.yahoo.config.application.api.ApplicationMetaData; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.provision.AllocatedHosts; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.AthenzDomain; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.TenantName; import com.yahoo.lang.SettableOptional; -import java.util.logging.Level; import com.yahoo.transaction.Transaction; import com.yahoo.vespa.config.server.GlobalComponentRegistry; import com.yahoo.vespa.config.server.ReloadHandler; @@ -16,8 +20,8 @@ import com.yahoo.vespa.curator.Curator; import org.apache.zookeeper.KeeperException; import java.time.Clock; -import java.time.Instant; import java.util.Optional; +import java.util.logging.Level; import java.util.logging.Logger; /** @@ -99,11 +103,11 @@ public class RemoteSession extends Session { @Override public String logPre() { - if (applicationSet != null) { - return TenantRepository.logPre(applicationSet.getForVersionOrLatest(Optional.empty(), Instant.now()).getId()); + if (getApplicationId().equals(ApplicationId.defaultId())) { + return TenantRepository.logPre(getTenant()); + } else { + return TenantRepository.logPre(getApplicationId()); } - - return TenantRepository.logPre(getTenant()); } void confirmUpload() { @@ -135,4 +139,34 @@ public class RemoteSession extends Session { transaction.close(); } + public ApplicationId getApplicationId() { return zooKeeperClient.readApplicationId(); } + + public Optional getDockerImageRepository() { return zooKeeperClient.readDockerImageRepository(); } + + public Version getVespaVersion() { return zooKeeperClient.readVespaVersion(); } + + public Optional getAthenzDomain() { return zooKeeperClient.readAthenzDomain(); } + + public AllocatedHosts getAllocatedHosts() { + return zooKeeperClient.getAllocatedHosts(); + } + + // Note: Assumes monotonically increasing session ids + public boolean isNewerThan(long sessionId) { + return getSessionId() > sessionId; + } + + public Transaction createDeactivateTransaction() { + return createSetStatusTransaction(Status.DEACTIVATE); + } + + private Transaction createSetStatusTransaction(Status status) { + return zooKeeperClient.createWriteStatusTransaction(status); + } + + public ApplicationMetaData getMetaData() { + return zooKeeperClient.loadApplicationPackage().getMetaData(); + } + + } -- cgit v1.2.3