diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunner.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunner.java index 926291c698..f54954a79a 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunner.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunner.java @@ -192,6 +192,7 @@ public class StubRunner implements StubRunning { if (this.localStubRunner != null) { this.localStubRunner.shutdown(); } + TemporaryFileStorage.cleanup(this.stubRunnerOptions.isDeleteStubsAfterTest()); } } diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/TemporaryFileStorage.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/TemporaryFileStorage.java index d998e77aa3..1eaf6ddc92 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/TemporaryFileStorage.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/TemporaryFileStorage.java @@ -24,6 +24,7 @@ import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Queue; +import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import org.apache.commons.logging.Log; @@ -46,14 +47,15 @@ final class TemporaryFileStorage { * we're creating a bounded in-memory storage of unpacked files and later we register * a shutdown hook to remove all these files. */ - private static final Queue TEMP_FILES_LOG = new LinkedBlockingQueue<>(1000); + private static final BlockingQueue TEMP_FILES_LOG = new LinkedBlockingQueue<>( + 20_000); private TemporaryFileStorage() { throw new IllegalStateException("Can't instantiate a utility class"); } static void add(File file) { - TEMP_FILES_LOG.add(file); + TEMP_FILES_LOG.offer(file); } static Queue files() { @@ -65,8 +67,8 @@ final class TemporaryFileStorage { log.info("Will not clear temporary files due to switch"); return; } - try { - for (File file : TemporaryFileStorage.files()) { + for (File file : TemporaryFileStorage.files()) { + try { if (file.isDirectory()) { Files.walkFileTree(file.toPath(), new SimpleFileVisitor() { @Override @@ -94,12 +96,12 @@ final class TemporaryFileStorage { Files.delete(file.toPath()); } } - } - catch (NoClassDefFoundError | IOException e) { - // Added NoClassDefFoundError cause sometimes it's visible in the builds - // this error is completely harmless - if (log.isTraceEnabled()) { - log.trace("Failed to remove temporary file", e); + catch (NoClassDefFoundError | IOException e) { + // Added NoClassDefFoundError cause sometimes it's visible in the builds + // this error is completely harmless + if (log.isTraceEnabled()) { + log.trace("Failed to remove temporary file", e); + } } } }