diff options
4 files changed, 14 insertions, 29 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 6f907088f01..ecf300359a7 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 @@ -458,7 +458,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye private Application getApplication(ApplicationId applicationId, Optional<Version> version) { try { Tenant tenant = tenantRepository.getTenant(applicationId.tenant()); - if (tenant == null) throw new IllegalArgumentException("Tenant '" + applicationId.tenant() + "' not found"); + if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found"); long sessionId = getSessionIdForApplication(tenant, applicationId); RemoteSession session = tenant.getRemoteSessionRepo().getSession(sessionId, 0); return session.ensureApplicationLoaded().getForVersionOrLatest(version, clock.instant()); @@ -533,10 +533,16 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye return getActiveSession(tenantRepository.getTenant(applicationId.tenant()), applicationId); } - public long getSessionIdForApplication(Tenant tenant, ApplicationId applicationId) { + public long getSessionIdForApplication(ApplicationId applicationId) { + Tenant tenant = tenantRepository.getTenant(applicationId.tenant()); + if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found"); + return getSessionIdForApplication(tenant, applicationId); + } + + private long getSessionIdForApplication(Tenant tenant, ApplicationId applicationId) { TenantApplications applicationRepo = tenant.getApplicationRepo(); if (applicationRepo == null) - throw new IllegalArgumentException("Application repo for tenant '" + tenant.getName() + "' not found"); + throw new NotFoundException("Application repo for tenant '" + tenant.getName() + "' not found"); return applicationRepo.requireActiveSessionOf(applicationId); } @@ -626,19 +632,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye // ---------------- Misc operations ---------------------------------------------------------------- - public Tenant verifyTenantAndApplication(ApplicationId applicationId) { - TenantName tenantName = applicationId.tenant(); - if (!tenantRepository.checkThatTenantExists(tenantName)) { - throw new IllegalArgumentException("Tenant " + tenantName + " was not found."); - } - Tenant tenant = tenantRepository.getTenant(tenantName); - List<ApplicationId> applicationIds = listApplicationIds(tenant); - if (!applicationIds.contains(applicationId)) { - throw new IllegalArgumentException("No such application id: " + applicationId); - } - return tenant; - } - public ApplicationMetaData getMetadataFromSession(Tenant tenant, long sessionId) { return getLocalSession(tenant, sessionId).getMetaData(); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java index f7a26ebd76c..5b2f6cab3c4 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java @@ -10,6 +10,7 @@ import com.yahoo.path.Path; import com.yahoo.text.Utf8; import com.yahoo.transaction.Transaction; import com.yahoo.vespa.config.server.GlobalComponentRegistry; +import com.yahoo.vespa.config.server.NotFoundException; import com.yahoo.vespa.config.server.ReloadHandler; import com.yahoo.vespa.config.server.tenant.TenantRepository; import com.yahoo.vespa.curator.Curator; @@ -92,7 +93,7 @@ public class TenantApplications { /** Returns the id of the currently active session for the given application, if any. Throws on unknown applications. */ public Optional<Long> activeSessionOf(ApplicationId id) { String data = curator.getData(applicationPath(id)).map(Utf8::toString) - .orElseThrow(() -> new IllegalArgumentException("Unknown application '" + id + "'.")); + .orElseThrow(() -> new NotFoundException("No such application id: '" + id + "'")); return data.isEmpty() ? Optional.empty() : Optional.of(Long.parseLong(data)); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java index d9592dc9352..865805d1258 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java @@ -57,7 +57,6 @@ public class ApplicationHandler extends HttpHandler { @Override public HttpResponse handleGET(HttpRequest request) { ApplicationId applicationId = getApplicationIdFromRequest(request); - Tenant tenant = verifyTenantAndApplication(applicationId); Duration timeout = HttpHandler.getRequestTimeout(request, Duration.ofSeconds(5)); if (isServiceConvergeRequest(request)) { @@ -74,10 +73,10 @@ public class ApplicationHandler extends HttpHandler { } if (isContentRequest(request)) { - long sessionId = applicationRepository.getSessionIdForApplication(tenant, applicationId); + long sessionId = applicationRepository.getSessionIdForApplication(applicationId); String contentPath = ApplicationContentRequest.getContentPath(request); ApplicationFile applicationFile = - applicationRepository.getApplicationFileFromSession(tenant.getName(), + applicationRepository.getApplicationFileFromSession(applicationId.tenant(), sessionId, contentPath, ContentRequest.getApplicationFileMode(request.getMethod())); @@ -135,14 +134,6 @@ public class ApplicationHandler extends HttpHandler { request.getProperty("clusterId")); } - private Tenant verifyTenantAndApplication(ApplicationId applicationId) { - try { - return applicationRepository.verifyTenantAndApplication(applicationId); - } catch (IllegalArgumentException e) { - throw new NotFoundException(e.getMessage()); - } - } - private static BindingMatch<?> getBindingMatch(HttpRequest request) { return HttpConfigRequests.getBindingMatch(request, // WARNING: UPDATE src/main/resources/configserver-app/services.xml IF YOU MAKE ANY CHANGES TO THESE BINDINGS! diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java index a843212927b..41db57ab1e0 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java @@ -197,7 +197,7 @@ public class ApplicationHandlerTest { ApplicationId unknown = new ApplicationId.Builder().applicationName("unknown").tenant(mytenantName).build(); HttpResponse responseForUnknown = fileDistributionStatus(unknown, zone); assertEquals(404, responseForUnknown.getStatus()); - assertEquals("{\"error-code\":\"NOT_FOUND\",\"message\":\"No such application id: mytenant.unknown\"}", + assertEquals("{\"error-code\":\"NOT_FOUND\",\"message\":\"No such application id: 'mytenant.unknown'\"}", SessionHandlerTest.getRenderedString(responseForUnknown)); } |