Re-order shutdown hook in BootRunTask
This commit is contained in:
@@ -30,7 +30,6 @@ import org.gradle.process.ExecResult;
|
||||
import org.gradle.process.internal.DefaultJavaExecAction;
|
||||
import org.gradle.process.internal.ExecHandle;
|
||||
import org.springframework.boot.loader.tools.FileUtils;
|
||||
import org.springframework.boot.loader.tools.SignalUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
/**
|
||||
@@ -67,24 +66,29 @@ public class BootRunTask extends JavaExec {
|
||||
}
|
||||
}
|
||||
|
||||
private ExecResult executeReflectively() throws Exception {
|
||||
private ExecResult executeReflectively() throws Exception {
|
||||
Field builder = ReflectionUtils.findField(JavaExec.class, "javaExecHandleBuilder");
|
||||
builder.setAccessible(true);
|
||||
DefaultJavaExecAction action = (DefaultJavaExecAction) builder.get(this);
|
||||
setMain(getMain());
|
||||
final ExecHandle execHandle = action.build();
|
||||
ExecResult execResult = execHandle.start().waitForFinish();
|
||||
if (!isIgnoreExitValue()) {
|
||||
execResult.assertNormalExitValue();
|
||||
}
|
||||
SignalUtils.attachSignalHandler(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getLogger().info("Aborting java sub-process");
|
||||
execHandle.abort();
|
||||
}
|
||||
});
|
||||
return execResult;
|
||||
}
|
||||
final ExecHandle execHandle = action.build();
|
||||
try {
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getLogger().info("Aborting java sub-process");
|
||||
execHandle.abort();
|
||||
}
|
||||
}));
|
||||
} catch (Exception e) {
|
||||
getLogger().warn("Could not attach shutdown hook (child process may be orphaned)");
|
||||
}
|
||||
ExecResult execResult = execHandle.start().waitForFinish();
|
||||
if (!isIgnoreExitValue()) {
|
||||
execResult.assertNormalExitValue();
|
||||
}
|
||||
return execResult;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user