diff --git a/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateResult.java b/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateResult.java index bbca3f5..036b9b7 100644 --- a/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateResult.java +++ b/src/main/java/de/mlessmann/certassist/openssl/OpenSSLCertificateResult.java @@ -41,12 +41,20 @@ public class OpenSSLCertificateResult implements CertificateUsage { @Override public void close() { + cleanupDir(true); + } + + private void cleanupDir(boolean retryOnExit) { + try { log.info("Cleaning up temporary output directory {}", tmpDir); Files.walkFileTree(tmpDir, Set.of(), Integer.MAX_VALUE, new DeleteRecursiveFileVisitor()); Files.deleteIfExists(tmpDir); } catch (IOException e) { - log.error("Failed to clean up temporary output directory {}!", tmpDir, e); + log.error("Failed to clean up temporary output directory {}! (retry={})", tmpDir, retryOnExit, e); + if (retryOnExit) { + Runtime.getRuntime().addShutdownHook(new Thread(() -> cleanupDir(false))); + } } } }