aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/packages
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2018-03-23 08:31:17 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-23 08:32:32 -0700
commit24e2d4dab0abb95333a1c57b70cd7f48a50195d3 (patch)
tree8de24e30b6249efbab5406a3f3079b8f7ade4ca7 /src/main/java/com/google/devtools/build/lib/skyframe/packages
parent8e9f4a8591d65c7972aea3957c57601570e0a39b (diff)
Fix test flakiness due to the filesystem mutations done during the 'fetch' work done by BazelPackageBuilderHelperForTesting#sanityCheckBazelPackageLoader.
We fix this flakiness by _not_ having RepositoryDelegatorFunction unconditionally 'fetch' local repos. We then have to make a change to BazelPackageLoader test to reinstate these mutations, since it was only working before due to the unconditional filesystem mutations done here :p RELNOTES: None PiperOrigin-RevId: 190222830
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/packages')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
index cdaa07c1eb..1393fbf7dd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java
@@ -54,7 +54,11 @@ import java.util.concurrent.atomic.AtomicReference;
public class BazelPackageLoader extends AbstractPackageLoader {
/** Returns a fresh {@link Builder} instance. */
public static Builder builder(Path workspaceDir, Path installBase, Path outputBase) {
- Builder builder = new Builder(workspaceDir, installBase, outputBase);
+ // Prevent PackageLoader from fetching any remote repositories; these should only be fetched by
+ // Bazel before calling PackageLoader.
+ AtomicBoolean isFetch = new AtomicBoolean(false);
+
+ Builder builder = new Builder(workspaceDir, installBase, outputBase, isFetch);
RepositoryCache repositoryCache = new RepositoryCache();
HttpDownloader httpDownloader = new HttpDownloader(repositoryCache);
@@ -63,10 +67,6 @@ public class BazelPackageLoader extends AbstractPackageLoader {
ImmutableMap<String, RepositoryFunction> repositoryHandlers =
BazelRepositoryModule.repositoryRules(httpDownloader, new MavenDownloader(repositoryCache));
- // Prevent PackageLoader from fetching any remote repositories; these should only be fetched by
- // Bazel before calling PackageLoader.
- AtomicBoolean isFetch = new AtomicBoolean(false);
-
builder.addExtraSkyFunctions(
ImmutableMap.<SkyFunctionName, SkyFunction>builder()
.put(
@@ -105,6 +105,8 @@ public class BazelPackageLoader extends AbstractPackageLoader {
private static final ConfiguredRuleClassProvider DEFAULT_RULE_CLASS_PROVIDER =
createRuleClassProvider();
+ private final AtomicBoolean isFetch;
+
private static ConfiguredRuleClassProvider createRuleClassProvider() {
ConfiguredRuleClassProvider.Builder classProvider = new ConfiguredRuleClassProvider.Builder();
new BazelRepositoryModule().initializeRuleClasses(classProvider);
@@ -112,8 +114,9 @@ public class BazelPackageLoader extends AbstractPackageLoader {
return classProvider.build();
}
- private Builder(Path workspaceDir, Path installBase, Path outputBase) {
+ private Builder(Path workspaceDir, Path installBase, Path outputBase, AtomicBoolean isFetch) {
super(workspaceDir, installBase, outputBase);
+ this.isFetch = isFetch;
}
@Override
@@ -131,6 +134,11 @@ public class BazelPackageLoader extends AbstractPackageLoader {
return DEFAULT_RULE_CLASS_PROVIDER.getDefaultsPackageContent(
InvocationPolicy.getDefaultInstance());
}
+
+ Builder setFetchForTesting() {
+ this.isFetch.set(true);
+ return this;
+ }
}
private BazelPackageLoader(Builder builder) {