diff options
author | janakr <janakr@google.com> | 2017-07-13 19:55:32 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-07-14 10:52:09 +0200 |
commit | 28adce590d95cb9aa826fcd9f939efbb8e1eab7e (patch) | |
tree | 4df40b5eebecd4f237a6343d5f3577c480600e24 /src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java | |
parent | 5abf4ed4dc9fc134e47f9b56e3b65ba26d0ba9f0 (diff) |
If globbing throws an IOException, fail to construct the package instead of constructing the package with an error.
Prior to this change, if a Package.Builder object was constructed, it was guaranteed that a Package (possibly with errors) would be created. This is no longer true: if an IOException is set on the Package.Builder object, it will throw a NoSuchPackageException during #build().
PiperOrigin-RevId: 161832111
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java index 33fb4aa5cb..4a6010faba 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java @@ -567,7 +567,11 @@ public class PackageFunction implements SkyFunction { return null; } Package.Builder pkgBuilder = packageBuilderAndGlobDeps.value; - pkgBuilder.buildPartial(); + try { + pkgBuilder.buildPartial(); + } catch (NoSuchPackageException e) { + throw new PackageFunctionException(e, Transience.TRANSIENT); + } try { // Since the Skyframe dependencies we request below in // markDependenciesAndPropagateFilesystemExceptions are requested independently of |