summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2017-01-04 19:34:50 +0100
committerHarald Musum <musum@yahoo-inc.com>2017-01-04 19:34:50 +0100
commitd814402534df109382f72ce2d3a0af424e921a73 (patch)
treec092d3fb470ac7e8a8f31b263bfc37bd4b17824b /configserver
parentfb0cac9ec71be9fd52c5b8e5902d01313ee1540e (diff)
Fix bug with using local instead of remote session for GET
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java16
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java6
2 files changed, 14 insertions, 8 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 951e73e6e8a..8ba71d7533e 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
@@ -26,8 +26,8 @@ import com.yahoo.vespa.config.server.session.LocalSession;
import com.yahoo.vespa.config.server.session.LocalSessionRepo;
import com.yahoo.vespa.config.server.session.PrepareParams;
import com.yahoo.vespa.config.server.session.RemoteSession;
-import com.yahoo.vespa.config.server.session.SessionFactory;
import com.yahoo.vespa.config.server.session.Session;
+import com.yahoo.vespa.config.server.session.SessionFactory;
import com.yahoo.vespa.config.server.session.SilentDeployLogger;
import com.yahoo.vespa.config.server.tenant.ActivateLock;
import com.yahoo.vespa.config.server.tenant.Rotations;
@@ -239,15 +239,22 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return getLocalSession(tenant, sessionId).getMetaData();
}
- public void validateThatSessionIsNotActive(Tenant tenant, long sessionId) {
+ public void validateThatLocalSessionIsNotActive(Tenant tenant, long sessionId) {
LocalSession session = getLocalSession(tenant, sessionId);
if (Session.Status.ACTIVATE.equals(session.getStatus())) {
throw new IllegalStateException("Session is active: " + sessionId);
}
}
- public void validateThatSessionIsPrepared(Tenant tenant, long sessionId) {
- LocalSession session = getLocalSession(tenant, sessionId);
+ public void validateThatRemoteSessionIsNotActive(Tenant tenant, long sessionId) {
+ RemoteSession session = getRemoteSession(tenant, sessionId);
+ if (Session.Status.ACTIVATE.equals(session.getStatus())) {
+ throw new IllegalStateException("Session is active: " + sessionId);
+ }
+ }
+
+ public void validateThatRemoteSessionIsPrepared(Tenant tenant, long sessionId) {
+ RemoteSession session = getRemoteSession(tenant, sessionId);
if (!Session.Status.PREPARE.equals(session.getStatus()))
throw new IllegalStateException("Session not prepared: " + sessionId);
}
@@ -280,7 +287,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
tenant.getPath());
}
-
private List<ApplicationId> listApplicationIds(Tenant tenant) {
TenantApplications applicationRepo = tenant.getApplicationRepo();
return applicationRepo.listApplications();
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
index 731f7db262d..60a425f2708 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
@@ -56,7 +56,7 @@ public class SessionPrepareHandler extends SessionHandler {
Tenant tenant = getExistingTenant(request);
TenantName tenantName = tenant.getName();
long sessionId = getSessionIdV2(request);
- applicationRepository.validateThatSessionIsNotActive(tenant, sessionId);
+ applicationRepository.validateThatLocalSessionIsNotActive(tenant, sessionId);
PrepareParams prepareParams = PrepareParams.fromHttpRequest(request, tenantName, zookeeperBarrierTimeout);
// An app id currently using only the name
ApplicationId appId = prepareParams.getApplicationId();
@@ -90,8 +90,8 @@ public class SessionPrepareHandler extends SessionHandler {
protected HttpResponse handleGET(HttpRequest request) {
Tenant tenant = getExistingTenant(request);
long sessionId = getSessionIdV2(request);
- applicationRepository.validateThatSessionIsNotActive(tenant, sessionId);
- applicationRepository.validateThatSessionIsPrepared(tenant, sessionId);
+ applicationRepository.validateThatRemoteSessionIsNotActive(tenant, sessionId);
+ applicationRepository.validateThatRemoteSessionIsPrepared(tenant, sessionId);
return new SessionPrepareResponse(createDeployLog(), tenant.getName(), request, sessionId);
}