aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-05-22 09:42:04 +0200
committerGitHub <noreply@github.com>2018-05-22 09:42:04 +0200
commitc8427c14fd7f1d600bff6278499d8af395490495 (patch)
treea43ba71501d26d8af85a4efbba889b13a3e43685
parentda543305317e887582315c1e4f25b080edcca430 (diff)
parentc81ac708653168116b550f0bbca96a3c4d32f3ff (diff)
Merge pull request #5896 from vespa-engine/hmusum/cleanup-temp-dir-when-getting-exception
Delete temp dir when exception happens
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java20
1 files changed, 8 insertions, 12 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 28718ee7154..d0da4870f4f 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
@@ -153,8 +153,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
public PrepareResult deploy(CompressedApplicationInputStream in, PrepareParams prepareParams,
boolean ignoreLockFailure, boolean ignoreSessionStaleFailure, Instant now) {
- File tempDir = Files.createTempDir();
- return deploy(decompressApplication(in, tempDir), prepareParams, ignoreLockFailure, ignoreSessionStaleFailure, now);
+ return deploy(decompressApplication(in), prepareParams, ignoreLockFailure, ignoreSessionStaleFailure, now);
}
public PrepareResult deploy(File applicationPackage, PrepareParams prepareParams) {
@@ -163,10 +162,8 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
public PrepareResult deploy(File applicationPackage, PrepareParams prepareParams,
boolean ignoreLockFailure, boolean ignoreSessionStaleFailure, Instant now) {
- File tempDir = Files.createTempDir();
ApplicationId applicationId = prepareParams.getApplicationId();
long sessionId = createSession(applicationId, prepareParams.getTimeoutBudget(), applicationPackage);
- cleanupApplicationDirectory(tempDir, logger);
Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
return prepareAndActivate(tenant, sessionId, prepareParams, ignoreLockFailure, ignoreSessionStaleFailure, now);
}
@@ -351,10 +348,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
public long createSession(ApplicationId applicationId, TimeoutBudget timeoutBudget, InputStream in, String contentType) {
- File tempDir = Files.createTempDir();
- long sessionId = createSession(applicationId, timeoutBudget, decompressApplication(in, contentType, tempDir));
- cleanupApplicationDirectory(tempDir, logger);
- return sessionId;
+ return createSession(applicationId, timeoutBudget, decompressApplication(in, contentType));
}
public long createSession(ApplicationId applicationId, TimeoutBudget timeoutBudget, File applicationDirectory) {
@@ -445,19 +439,21 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return currentActiveApplicationSet;
}
- private File decompressApplication(InputStream in, String contentType, File tempDir) {
+ private File decompressApplication(InputStream in, String contentType) {
try (CompressedApplicationInputStream application =
CompressedApplicationInputStream.createFromCompressedStream(in, contentType)) {
- return decompressApplication(application, tempDir);
+ return decompressApplication(application);
} catch (IOException e) {
throw new IllegalArgumentException("Unable to decompress data in body", e);
}
}
- private File decompressApplication(CompressedApplicationInputStream in, File tempDir) {
+ private File decompressApplication(CompressedApplicationInputStream in) {
+ File tempDir = Files.createTempDir();
try {
return in.decompress(tempDir);
} catch (IOException e) {
+ cleanupTempDirectory(tempDir, logger);
throw new IllegalArgumentException("Unable to decompress stream", e);
}
}
@@ -467,7 +463,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return applicationRepo.listApplications();
}
- private static void cleanupApplicationDirectory(File tempDir, DeployLogger logger) {
+ private static void cleanupTempDirectory(File tempDir, DeployLogger logger) {
logger.log(LogLevel.DEBUG, "Deleting tmp dir '" + tempDir + "'");
if (!IOUtils.recursiveDeleteDir(tempDir)) {
logger.log(LogLevel.WARNING, "Not able to delete tmp dir '" + tempDir + "'");