diff options
7 files changed, 54 insertions, 51 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index c47ba5fd4ce..6226af08a09 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -308,7 +308,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye Tenant tenant = tenantRepository.getTenant(application.tenant()); if (tenant == null) return Optional.empty(); - RemoteSession activeSession = getActiveSession(tenant, application); + LocalSession activeSession = getActiveLocalSession(tenant, application); if (activeSession == null) return Optional.empty(); TimeoutBudget timeoutBudget = new TimeoutBudget(clock, timeout); LocalSession newSession = tenant.getSessionFactory().createSessionFromExisting(activeSession, logger, true, timeoutBudget); @@ -809,6 +809,14 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye return null; } + private LocalSession getActiveLocalSession(Tenant tenant, ApplicationId applicationId) { + TenantApplications applicationRepo = tenant.getApplicationRepo(); + if (applicationRepo.activeApplications().contains(applicationId)) { + return tenant.getLocalSessionRepo().getSession(applicationRepo.requireActiveSessionOf(applicationId)); + } + return null; + } + private static void logConfigChangeActions(ConfigChangeActions actions, DeployLogger logger) { RestartActions restartActions = actions.getRestartActions(); if ( ! restartActions.isEmpty()) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java index 5a0174a7af7..a3606d8ce54 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java @@ -1,22 +1,19 @@ // 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.ApplicationFile; -import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.ApplicationMetaData; +import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.provision.AllocatedHosts; -import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.TenantName; +import com.yahoo.io.IOUtils; +import com.yahoo.path.Path; import com.yahoo.transaction.AbstractTransaction; import com.yahoo.transaction.NestedTransaction; import com.yahoo.transaction.Transaction; -import com.yahoo.io.IOUtils; -import com.yahoo.path.Path; -import com.yahoo.vespa.config.server.*; -import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.TenantName; +import com.yahoo.vespa.config.server.TimeoutBudget; import com.yahoo.vespa.config.server.application.ApplicationSet; import com.yahoo.vespa.config.server.application.TenantApplications; import com.yahoo.vespa.config.server.configchange.ConfigChangeActions; @@ -123,22 +120,6 @@ public class LocalSession extends Session implements Comparable<LocalSession> { zooKeeperClient.getActiveWaiter().awaitCompletion(timeoutBudget.timeLeft()); } - public void setApplicationId(ApplicationId applicationId) { - zooKeeperClient.writeApplicationId(applicationId); - } - - public void setVespaVersion(Version version) { - zooKeeperClient.writeVespaVersion(version); - } - - public void setDockerImageRepository(Optional<DockerImage> dockerImageRepository) { - zooKeeperClient.writeDockerImageRepository(dockerImageRepository); - } - - public void setAthenzDomain(Optional<AthenzDomain> athenzDomain) { - zooKeeperClient.writeAthenzDomain(athenzDomain); - } - public enum Mode { READ, WRITE } @@ -147,14 +128,6 @@ public class LocalSession extends Session implements Comparable<LocalSession> { return applicationPackage.getMetaData(); } - public ApplicationId getApplicationId() { return zooKeeperClient.readApplicationId(); } - - public Optional<DockerImage> getDockerImageRepository() { return zooKeeperClient.readDockerImageRepository(); } - - public Version getVespaVersion() { return zooKeeperClient.readVespaVersion(); } - - public Optional<AthenzDomain> getAthenzDomain() { return zooKeeperClient.readAthenzDomain(); } - public AllocatedHosts getAllocatedHosts() { return zooKeeperClient.getAllocatedHosts(); } 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 68c00cafd07..a1d767b0d1c 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,13 +1,10 @@ // 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 com.yahoo.transaction.Transaction; @@ -139,14 +136,6 @@ public class RemoteSession extends Session { transaction.close(); } - public ApplicationId getApplicationId() { return zooKeeperClient.readApplicationId(); } - - public Optional<DockerImage> getDockerImageRepository() { return zooKeeperClient.readDockerImageRepository(); } - - public Version getVespaVersion() { return zooKeeperClient.readVespaVersion(); } - - public Optional<AthenzDomain> getAthenzDomain() { return zooKeeperClient.readAthenzDomain(); } - public AllocatedHosts getAllocatedHosts() { return zooKeeperClient.getAllocatedHosts(); } 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 64ecc510fe9..d6920cae4c6 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 @@ -1,9 +1,16 @@ // 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.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.vespa.config.server.tenant.TenantRepository; +import java.util.Optional; + /** * A session represents an instance of an application that can be edited, prepared and activated. This * class represents the common stuff between sessions working on the local file @@ -72,4 +79,33 @@ public abstract class Session { return zooKeeperClient.readCreateTime(); } + + public void setApplicationId(ApplicationId applicationId) { + zooKeeperClient.writeApplicationId(applicationId); + } + + public void setVespaVersion(Version version) { + zooKeeperClient.writeVespaVersion(version); + } + + public void setDockerImageRepository(Optional<DockerImage> dockerImageRepository) { + zooKeeperClient.writeDockerImageRepository(dockerImageRepository); + } + + public void setAthenzDomain(Optional<AthenzDomain> athenzDomain) { + zooKeeperClient.writeAthenzDomain(athenzDomain); + } + + public ApplicationId getApplicationId() { return zooKeeperClient.readApplicationId(); } + + public Optional<DockerImage> getDockerImageRepository() { return zooKeeperClient.readDockerImageRepository(); } + + public Version getVespaVersion() { return zooKeeperClient.readVespaVersion(); } + + public Optional<AthenzDomain> getAthenzDomain() { return zooKeeperClient.readAthenzDomain(); } + + public AllocatedHosts getAllocatedHosts() { + return zooKeeperClient.getAllocatedHosts(); + } + } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactory.java index 3e2605b9c02..6b51abb7cca 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactory.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactory.java @@ -33,7 +33,7 @@ public interface SessionFactory { * @param timeoutBudget timeout for creating session and waiting for other servers. * @return a new session */ - LocalSession createSessionFromExisting(RemoteSession existingSession, DeployLogger logger, + LocalSession createSessionFromExisting(Session existingSession, DeployLogger logger, boolean internalRedeploy, TimeoutBudget timeoutBudget); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java index f85bb8caf4d..5accad2166e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java @@ -118,8 +118,7 @@ public class SessionFactoryImpl implements SessionFactory, LocalSessionLoader { return session; } - @Override - public LocalSession createSessionFromExisting(RemoteSession existingSession, + public LocalSession createSessionFromExisting(Session existingSession, DeployLogger logger, boolean internalRedeploy, TimeoutBudget timeoutBudget) { diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java index 79912e8ea82..064bc3afaec 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java @@ -30,7 +30,6 @@ import com.yahoo.vespa.config.server.session.DummyTransaction; import com.yahoo.vespa.config.server.session.LocalSession; import com.yahoo.vespa.config.server.session.MockSessionZKClient; import com.yahoo.vespa.config.server.session.PrepareParams; -import com.yahoo.vespa.config.server.session.RemoteSession; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.config.server.session.SessionContext; import com.yahoo.vespa.config.server.session.SessionFactory; @@ -215,8 +214,7 @@ public class SessionHandlerTest { } @Override - public LocalSession createSessionFromExisting(RemoteSession existingSession, DeployLogger logger, - boolean internalRedeploy, TimeoutBudget timeoutBudget) { + public LocalSession createSessionFromExisting(Session existingSession, DeployLogger logger, boolean internalRedeploy, TimeoutBudget timeoutBudget) { if (doThrow) { throw new RuntimeException("foo"); } |