From 8cd8963bca60ba4393722f399cf7327a7001ecd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Le=C3=9Fmann=20=28=40MarkL4YG=29?= Date: Sat, 23 Nov 2024 13:16:44 +0100 Subject: [PATCH] fix: Retry cleanup again on system exit --- .../certassist/openssl/OpenSSLCertificateResult.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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))); + } } } }