aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/bazel
diff options
context:
space:
mode:
authorGravatar laszlocsomor <laszlocsomor@google.com>2018-07-05 00:17:55 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-05 00:19:21 -0700
commit59f17d6e0550bf63a0b6ef182e2d63474e058ede (patch)
tree4cbec855321ead722363687b9983685e2b1bf648 /src/main/java/com/google/devtools/build/lib/bazel
parentb40b7e715307de416b786c1d95f6cf3a6b69c9d3 (diff)
Bazel server: ensure InputStreams are closed
Use try-with-resources to ensure InputStreams that we open via FileSystem.InputStream(path) are closed. Eagerly closing InputStreams avoids hanging on to file handles until the garbage collector finalizes the InputStream, meaning Bazel on Windows (and other processes) can delete or mutate these files. Hopefully this avoids intermittent file deletion errors that sometimes occur on Windows. See https://github.com/bazelbuild/bazel/issues/5512 RELNOTES: none PiperOrigin-RevId: 203338148
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/bazel')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepository.java7
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
index ede9cd2620..46c42b606b 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
@@ -46,6 +46,7 @@ import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
@@ -311,9 +312,10 @@ public class AndroidSdkRepositoryFunction extends AndroidRepositoryFunction {
env.getValueOrThrow(releaseFileKey, IOException.class);
Properties properties = new Properties();
- properties.load(sourcePropertiesFilePath.getInputStream());
+ try (InputStream in = sourcePropertiesFilePath.getInputStream()) {
+ properties.load(in);
+ }
return properties;
-
} catch (IOException e) {
String error = String.format(
"Could not read %s in Android SDK: %s", sourcePropertiesFilePath, e.getMessage());
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepository.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepository.java
index 1efca1efde..97ebf914f8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepository.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepository.java
@@ -21,6 +21,7 @@ import com.google.common.collect.Ordering;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
@@ -199,8 +200,10 @@ final class SdkMavenRepository {
private static final String DEFAULT_PACKAGING = "jar";
static Pom parse(Path path) throws IOException, ParserConfigurationException, SAXException {
- Document pomDocument =
- DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(path.getInputStream());
+ Document pomDocument = null;
+ try (InputStream in = path.getInputStream()) {
+ pomDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
+ }
Node packagingNode = pomDocument.getElementsByTagName("packaging").item(0);
String packaging = packagingNode == null ? DEFAULT_PACKAGING : packagingNode.getTextContent();
MavenCoordinate coordinate = MavenCoordinate.create(