< prev index next >
src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java
Print this page
@@ -444,13 +444,26 @@
hdiUtilVerbosityFlag,
mountedRoot.toAbsolutePath().toString());
// "hdiutil detach" might not work right away due to resource busy error, so
// repeat detach several times.
RetryExecutor retryExecutor = new RetryExecutor();
+ // Image can get detach even if we got resource busy error, so stop
+ // trying to detach it if it is no longer attached.
+ retryExecutor.setExecutorInitializer(exec -> {
+ if (!Files.exists(mountedRoot)) {
+ retryExecutor.abort();
+ }
+ });
+ try {
// 10 times with 3 second delays.
retryExecutor.setMaxAttemptsCount(10).setAttemptTimeoutMillis(3000)
.execute(pb);
+ } catch (IOException ex) {
+ if (!retryExecutor.isAborted()) {
+ throw ex;
+ }
+ }
}
// Compress it to a new image
pb = new ProcessBuilder(
hdiutil,
< prev index next >