diff options
author | nharmata <nharmata@google.com> | 2018-03-23 08:31:17 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-23 08:32:32 -0700 |
commit | 24e2d4dab0abb95333a1c57b70cd7f48a50195d3 (patch) | |
tree | 8de24e30b6249efbab5406a3f3079b8f7ade4ca7 /src/main/java/com/google/devtools/build/lib/skyframe/packages | |
parent | 8e9f4a8591d65c7972aea3957c57601570e0a39b (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.java | 20 |
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) { |