Browse Source

Tolerate files being briefly left open by FileWritingMessageHandler

When the context is closed, FileWritingMessageHandler is stopped and
it closes its output files. However, it appears to do so in a manner
which means that they may be closed after the call to close the
context is completed. This causes problems on Windows as files that
are still open cannot be deleted.

This commit adds a workaround to SampleIntegrationApplicationTests
so that it makes up to 10 attempts each 0.5s apart to clean up the
input and output directories.
pull/8009/head
Andy Wilkinson 9 years ago
parent
commit
3927dca3e0
  1. 18
      spring-boot-samples/spring-boot-sample-integration/src/test/java/sample/integration/consumer/SampleIntegrationApplicationTests.java

18
spring-boot-samples/spring-boot-sample-integration/src/test/java/sample/integration/consumer/SampleIntegrationApplicationTests.java

@ -50,9 +50,21 @@ public class SampleIntegrationApplicationTests {
private ConfigurableApplicationContext context; private ConfigurableApplicationContext context;
@Before @Before
public void deleteOutput() { public void deleteInputAndOutput() throws InterruptedException {
FileSystemUtils.deleteRecursively(new File("target/input")); deleteIfExists(new File("target/input"));
FileSystemUtils.deleteRecursively(new File("target/output")); deleteIfExists(new File("target/output"));
}
private void deleteIfExists(File directory) throws InterruptedException {
if (directory.exists()) {
for (int i = 0; i < 10; i++) {
if (FileSystemUtils.deleteRecursively(directory)) {
return;
}
Thread.sleep(100);
}
throw new IllegalStateException("Failed to delete '" + directory + "'");
}
} }
@After @After

Loading…
Cancel
Save