Write generated Java files to disk only if debug flag is set

Fixes #11082
This commit is contained in:
Dan Hermann 2019-08-13 14:36:09 -05:00
parent 44f08e20c7
commit 5125e0729e

View file

@ -74,9 +74,13 @@ public final class ComputeStepSyntaxElement<T extends Dataset> {
} else { } else {
final String name = String.format("CompiledDataset%d", CLASS_CACHE.size()); final String name = String.format("CompiledDataset%d", CLASS_CACHE.size());
final String code = generateCode(name); final String code = generateCode(name);
if (SOURCE_DIR != null) {
final Path sourceFile = SOURCE_DIR.resolve(String.format("%s.java", name)); final Path sourceFile = SOURCE_DIR.resolve(String.format("%s.java", name));
Files.write(sourceFile, code.getBytes(StandardCharsets.UTF_8)); Files.write(sourceFile, code.getBytes(StandardCharsets.UTF_8));
COMPILER.cookFile(sourceFile.toFile()); COMPILER.cookFile(sourceFile.toFile());
} else {
COMPILER.cook(code);
}
COMPILER.setParentClassLoader(COMPILER.getClassLoader()); COMPILER.setParentClassLoader(COMPILER.getClassLoader());
clazz = (Class<T>) COMPILER.getClassLoader().loadClass( clazz = (Class<T>) COMPILER.getClassLoader().loadClass(
String.format("org.logstash.generated.%s", name) String.format("org.logstash.generated.%s", name)
@ -125,17 +129,15 @@ public final class ComputeStepSyntaxElement<T extends Dataset> {
} }
private static Path debugDir() { private static Path debugDir() {
final Path sourceDir; Path sourceDir = null;
try { try {
final Path parentDir; final Path parentDir;
final String dir = System.getProperty(ICookable.SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR); final String dir = System.getProperty(ICookable.SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR);
if (dir == null) { if (dir != null) {
parentDir = Files.createTempDirectory("logstash");
} else {
parentDir = Paths.get(dir); parentDir = Paths.get(dir);
}
sourceDir = parentDir.resolve("org").resolve("logstash").resolve("generated"); sourceDir = parentDir.resolve("org").resolve("logstash").resolve("generated");
Files.createDirectories(sourceDir); Files.createDirectories(sourceDir);
}
} catch (final IOException ex) { } catch (final IOException ex) {
throw new IllegalStateException(ex); throw new IllegalStateException(ex);
} }