summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java10
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java39
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java36
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactory.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionFactoryImpl.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java4
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");
}