From edae388722ea6143f3feb7174e78de75b1b3d2b2 Mon Sep 17 00:00:00 2001 From: "Peter J. Kranz" Date: Thu, 20 Jul 2017 14:19:57 +0200 Subject: [PATCH] JENKINS-43568: readProperties java.exe locks properties file adding try-with-resource blocks to FilePath#read calls --- .../utility/steps/conf/ReadPropertiesStepExecution.java | 6 +++++- .../utility/steps/conf/mf/ReadManifestStepExecution.java | 7 +++++-- .../pipeline/utility/steps/maven/ReadMavenPomStep.java | 5 ++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/ReadPropertiesStepExecution.java b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/ReadPropertiesStepExecution.java index 07030adb..3ed7b803 100644 --- a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/ReadPropertiesStepExecution.java +++ b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/ReadPropertiesStepExecution.java @@ -31,6 +31,8 @@ import org.jenkinsci.plugins.workflow.steps.StepContextParameter; import javax.inject.Inject; + +import java.io.InputStream; import java.io.PrintStream; import java.io.StringReader; import java.util.HashMap; @@ -64,7 +66,9 @@ protected Map run() throws Exception { if (!StringUtils.isBlank(step.getFile())) { FilePath f = ws.child(step.getFile()); if (f.exists() && !f.isDirectory()) { - properties.load(f.read()); + try (InputStream is = f.read()) { + properties.load(is); + } } else if (f.isDirectory()) { logger.print("warning: "); logger.print(f.getRemote()); diff --git a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/mf/ReadManifestStepExecution.java b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/mf/ReadManifestStepExecution.java index 79b462f8..7e2b0bcf 100644 --- a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/mf/ReadManifestStepExecution.java +++ b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/conf/mf/ReadManifestStepExecution.java @@ -37,6 +37,7 @@ import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.util.Map; import java.util.jar.Manifest; @@ -96,8 +97,10 @@ private SimpleManifest parseFile(String file) throws IOException, InterruptedExc return parseText(text); } } else { - Manifest manifest = new Manifest(path.read()); - return new SimpleManifest(manifest); + try (InputStream is = path.read()) { + Manifest manifest = new Manifest(is); + return new SimpleManifest(manifest); + } } } } diff --git a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/ReadMavenPomStep.java b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/ReadMavenPomStep.java index 2258963d..ffdef558 100644 --- a/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/ReadMavenPomStep.java +++ b/src/main/java/org/jenkinsci/plugins/pipeline/utility/steps/maven/ReadMavenPomStep.java @@ -43,6 +43,7 @@ import javax.annotation.Nonnull; import javax.inject.Inject; import java.io.FileNotFoundException; +import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -123,7 +124,9 @@ protected Model run() throws Exception { if (path.isDirectory()) { throw new FileNotFoundException(path.getRemote() + " is a directory."); } - return new MavenXpp3Reader().read(path.read()); + try (InputStream is = path.read()) { + return new MavenXpp3Reader().read(is); + } } }