aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2017-07-13 19:55:32 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-14 10:52:09 +0200
commit28adce590d95cb9aa826fcd9f939efbb8e1eab7e (patch)
tree4df40b5eebecd4f237a6343d5f3577c480600e24 /src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
parent5abf4ed4dc9fc134e47f9b56e3b65ba26d0ba9f0 (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/WorkspaceFileFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
index 2372793333..71f2c98ff6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
@@ -72,13 +72,17 @@ public class WorkspaceFileFunction implements SkyFunction {
repoWorkspace, ruleClassProvider.getRunfilesPrefix());
if (workspaceASTValue.getASTs().isEmpty()) {
- return new WorkspaceFileValue(
- builder.build(), // resulting package
- ImmutableMap.<String, Extension>of(), // list of imports
- ImmutableMap.<String, Object>of(), // list of symbol bindings
- workspaceRoot, // Workspace root
- 0, // first fragment, idx = 0
- false); // last fragment
+ try {
+ return new WorkspaceFileValue(
+ builder.build(), // resulting package
+ ImmutableMap.<String, Extension>of(), // list of imports
+ ImmutableMap.<String, Object>of(), // list of symbol bindings
+ workspaceRoot, // Workspace root
+ 0, // first fragment, idx = 0
+ false); // last fragment
+ } catch (NoSuchPackageException e) {
+ throw new WorkspaceFileFunctionException(e, Transience.TRANSIENT);
+ }
}
WorkspaceFactory parser;
try (Mutability mutability = Mutability.create("workspace %s", repoWorkspace)) {
@@ -115,13 +119,17 @@ public class WorkspaceFileFunction implements SkyFunction {
throw new WorkspaceFileFunctionException(e, Transience.PERSISTENT);
}
- return new WorkspaceFileValue(
- builder.build(),
- parser.getImportMap(),
- parser.getVariableBindings(),
- workspaceRoot,
- key.getIndex(),
- key.getIndex() < workspaceASTValue.getASTs().size() - 1);
+ try {
+ return new WorkspaceFileValue(
+ builder.build(),
+ parser.getImportMap(),
+ parser.getVariableBindings(),
+ workspaceRoot,
+ key.getIndex(),
+ key.getIndex() < workspaceASTValue.getASTs().size() - 1);
+ } catch (NoSuchPackageException e) {
+ throw new WorkspaceFileFunctionException(e, Transience.TRANSIENT);
+ }
}
@Override