diff options
author | Harald Musum <musum@yahoo-inc.com> | 2017-01-04 19:34:50 +0100 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2017-01-04 19:34:50 +0100 |
commit | d814402534df109382f72ce2d3a0af424e921a73 (patch) | |
tree | c092d3fb470ac7e8a8f31b263bfc37bd4b17824b /configserver | |
parent | fb0cac9ec71be9fd52c5b8e5902d01313ee1540e (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.java | 16 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java | 6 |
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); } |