diff --git a/src/main/java/org/qortal/repository/Bootstrap.java b/src/main/java/org/qortal/repository/Bootstrap.java index 604e935d..c7a0a262 100644 --- a/src/main/java/org/qortal/repository/Bootstrap.java +++ b/src/main/java/org/qortal/repository/Bootstrap.java @@ -21,6 +21,7 @@ import java.net.URL; import java.nio.file.*; import java.security.SecureRandom; import java.util.List; +import java.util.UUID; import java.util.concurrent.TimeoutException; import java.util.concurrent.locks.ReentrantLock; @@ -249,7 +250,7 @@ public class Bootstrap { LOGGER.info("Moving files to output directory..."); inputPath = Paths.get(Settings.getInstance().getRepositoryPath(), "bootstrap"); - outputPath = Paths.get(Files.createTempDirectory("qortal-bootstrap").toString(), "bootstrap"); + outputPath = Paths.get(this.createTempDirectory().toString(), "bootstrap"); // Move the db backup to a "bootstrap" folder in the root directory @@ -295,6 +296,7 @@ public class Bootstrap { if (outputPath != null) { FileUtils.deleteDirectory(outputPath.toFile()); } + this.deleteAllTempDirectories(); } } @@ -319,7 +321,7 @@ public class Bootstrap { private void doImport() throws DataException { Path path = null; try { - Path tempDir = Files.createTempDirectory("qortal-bootstrap"); + Path tempDir = this.createTempDirectory(); String filename = String.format("%s%s", Settings.getInstance().getBootstrapFilenamePrefix(), this.getFilename()); path = Paths.get(tempDir.toString(), filename); @@ -335,9 +337,10 @@ public class Bootstrap { Files.delete(path); } catch (IOException e) { - // Temp folder will be cleaned up by system anyway, so ignore this failure + // Temp folder will be cleaned up below, so ignore this failure } } + this.deleteAllTempDirectories(); } } @@ -416,6 +419,23 @@ public class Bootstrap { } } + private Path createTempDirectory() throws IOException { + String baseDir = Paths.get(".", "tmp").toAbsolutePath().toString(); + String identifier = UUID.randomUUID().toString(); + Path tempDir = Paths.get(baseDir, identifier); + Files.createDirectories(tempDir); + return tempDir; + } + + private void deleteAllTempDirectories() { + Path path = Paths.get(".", "tmp"); + try { + FileUtils.deleteDirectory(path.toFile()); + } catch (IOException e) { + LOGGER.info("Unable to delete temp directory path: {}", path.toString()); + } + } + private void updateStatus(String text) { LOGGER.info(text); SplashFrame.getInstance().updateStatus(text);