aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-06-12 09:50:07 +0200
committerjonmv <venstad@gmail.com>2023-06-12 09:50:07 +0200
commit989fd056a145aa15b1666628bd857443e0928600 (patch)
tree84fee1c68af3b87a254dd3f9b4a3c0602ccb1be6
parent221bc016ff8ac18f5639dd663f6c5ef7109406fd (diff)
Avoid closing stream prematurely
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java15
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ZipResponse.java4
2 files changed, 6 insertions, 13 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index bead0663316..cc5438e9ed0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -986,12 +986,8 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
private HttpResponse devApplicationPackage(ApplicationId id, JobType type) {
ZoneId zone = type.zone();
RevisionId revision = controller.jobController().last(id, type).get().versions().targetRevision();
- try (InputStream applicationPackage = controller.applications().applicationStore().stream(new DeploymentId(id, zone), revision)) {
- return new ZipResponse(id.toFullString() + "." + zone.value() + ".zip", applicationPackage);
- }
- catch (IOException e) {
- throw new UncheckedIOException(e);
- }
+ return new ZipResponse(id.toFullString() + "." + zone.value() + ".zip",
+ controller.applications().applicationStore().stream(new DeploymentId(id, zone), revision));
}
private HttpResponse devApplicationPackageDiff(RunId runId) {
@@ -1028,12 +1024,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
InputStream applicationPackage = tests ?
controller.applications().applicationStore().streamTester(tenantAndApplication.tenant(), tenantAndApplication.application(), revision) :
controller.applications().applicationStore().stream(new DeploymentId(tenantAndApplication.defaultInstance(), ZoneId.defaultId()), revision);
- try (applicationPackage) {
- return new ZipResponse(filename, applicationPackage);
- }
- catch (IOException e) {
- throw new UncheckedIOException(e);
- }
+ return new ZipResponse(filename, applicationPackage);
}
private HttpResponse applicationPackageDiff(String tenant, String application, String number) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ZipResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ZipResponse.java
index 5262d36ef11..f45ef49402b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ZipResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ZipResponse.java
@@ -29,7 +29,9 @@ public class ZipResponse extends HttpResponse {
@Override
public void render(OutputStream outputStream) throws IOException {
- zipContent.transferTo(outputStream);
+ try (zipContent) {
+ zipContent.transferTo(outputStream);
+ }
}
}