in src/main/java/com/spotify/fmt/ForkingExecutor.java [371:413]
private static void run(Path closureFile, Path resultFile, Path errorFile) {
log.debug("deserializing closure: " + closureFile);
final SerializableCallable<?> fn;
try {
fn = Serialization.deserialize(closureFile);
} catch (SerializationException e) {
log.error("Failed to deserialize closure: " + closureFile, e);
System.exit(5);
return;
}
log.debug("executing closure");
Object result = null;
Throwable error = null;
try {
result = fn.call();
} catch (Throwable e) {
error = e;
}
if (error != null) {
log.debug("serializing error", error);
try {
Serialization.serialize(error, errorFile);
} catch (SerializationException e) {
log.error("failed to serialize error", e);
System.exit(6);
return;
}
} else {
log.debug("serializing result: " + result);
try {
Serialization.serialize(result, resultFile);
} catch (SerializationException e) {
log.error("failed to serialize result", e);
System.exit(7);
return;
}
}
System.err.flush();
System.exit(0);
}