diff options
author | 2015-09-24 09:52:53 +0000 | |
---|---|---|
committer | 2015-09-24 14:22:07 +0000 | |
commit | 5b9009b39c8549a99ba37d2739fb075997ab500f (patch) | |
tree | 8262fe94134b86a3c8e16c47b4a60f48198a2a83 /src/main/java/com/google/devtools | |
parent | 4eb82ec1fe39eff42aa5b1b4246fd941183abe6a (diff) |
Remove all direct uses of SkyframeExecutor.reporter.
Instead, pass an appropriate EventHandler instance in. This is in preparation
for creating a per-command EventHandler, in preparation for allowing multiple
commands to run in parallel. This is removal of shared global state.
--
MOS_MIGRATED_REVID=103828963
Diffstat (limited to 'src/main/java/com/google/devtools')
11 files changed, 71 insertions, 71 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java index 485a845ae3..97a30fba4b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java @@ -642,13 +642,13 @@ public class BuildView { if (loadingEnabled) { setArtifactRoots(loadingResult.getPackageRoots(), configurations); } - prepareToBuild(configurations, new SkyframePackageRootResolver(skyframeExecutor)); + prepareToBuild(configurations, new SkyframePackageRootResolver(skyframeExecutor, eventHandler)); skyframeExecutor.injectWorkspaceStatusData(); SkyframeAnalysisResult skyframeAnalysisResult; try { skyframeAnalysisResult = skyframeBuildView.configureTargets( - targetSpecs, aspectKeys, eventBus, viewOptions.keepGoing); + eventHandler, targetSpecs, aspectKeys, eventBus, viewOptions.keepGoing); setArtifactRoots(skyframeAnalysisResult.getPackageRoots(), configurations); } finally { skyframeBuildView.clearInvalidatedConfiguredTargets(); @@ -666,6 +666,7 @@ public class BuildView { AnalysisResult result = createResult( + eventHandler, loadingResult, topLevelOptions, viewOptions, @@ -679,6 +680,7 @@ public class BuildView { } private AnalysisResult createResult( + EventHandler eventHandler, LoadingResult loadingResult, TopLevelArtifactContext topLevelOptions, BuildView.Options viewOptions, @@ -701,7 +703,8 @@ public class BuildView { Set<ConfiguredTarget> exclusiveTests = new HashSet<>(); // build-info and build-changelist. - Collection<Artifact> buildInfoArtifacts = skyframeExecutor.getWorkspaceStatusArtifacts(); + Collection<Artifact> buildInfoArtifacts = + skyframeExecutor.getWorkspaceStatusArtifacts(eventHandler); Preconditions.checkState(buildInfoArtifacts.size() == 2, buildInfoArtifacts); artifactsToBuild.addAll(buildInfoArtifacts); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SkyframePackageRootResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/SkyframePackageRootResolver.java index db24b5ed1b..cf78c6ce18 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/SkyframePackageRootResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/SkyframePackageRootResolver.java @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.actions.PackageRootResolutionException; import com.google.devtools.build.lib.actions.PackageRootResolver; import com.google.devtools.build.lib.actions.Root; +import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.skyframe.SkyframeExecutor; import com.google.devtools.build.lib.vfs.PathFragment; @@ -29,14 +30,16 @@ import java.util.Map; */ public final class SkyframePackageRootResolver implements PackageRootResolver { private final SkyframeExecutor executor; + private final EventHandler eventHandler; - public SkyframePackageRootResolver(SkyframeExecutor executor) { + public SkyframePackageRootResolver(SkyframeExecutor executor, EventHandler eventHandler) { this.executor = executor; + this.eventHandler = eventHandler; } @Override public Map<PathFragment, Root> findPackageRoots(Iterable<PathFragment> execPaths) throws PackageRootResolutionException { - return executor.getArtifactRoots(execPaths); + return executor.getArtifactRoots(eventHandler, execPaths); } }
\ No newline at end of file diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java index ea1604a334..e9d73690b2 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java @@ -436,6 +436,7 @@ public class ExecutionTool { Profiler.instance().markPhase(ProfilePhase.EXECUTE); builder.buildArtifacts( + env.getReporter(), additionalArtifacts, analysisResult.getParallelTests(), analysisResult.getExclusiveTests(), diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java index 0a301695c7..535fe7e4f8 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java @@ -35,6 +35,7 @@ import com.google.devtools.build.lib.actions.TestExecException; import com.google.devtools.build.lib.analysis.AspectCompleteEvent; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.TargetCompleteEvent; +import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.BuildFileNotFoundException; import com.google.devtools.build.lib.rules.test.TestProvider; import com.google.devtools.build.lib.skyframe.ActionExecutionInactivityWatchdog; @@ -97,6 +98,7 @@ public class SkyframeBuilder implements Builder { @Override public void buildArtifacts( + EventHandler eventHandler, Set<Artifact> artifacts, Set<ConfiguredTarget> parallelTests, Set<ConfiguredTarget> exclusiveTests, @@ -120,7 +122,7 @@ public class SkyframeBuilder implements Builder { EvaluationResult<?> result; ActionExecutionStatusReporter statusReporter = ActionExecutionStatusReporter.create( - skyframeExecutor.getReporter(), executor, skyframeExecutor.getEventBus()); + eventHandler, executor, skyframeExecutor.getEventBus()); AtomicBoolean isBuildingExclusiveArtifacts = new AtomicBoolean(false); ActionExecutionInactivityWatchdog watchdog = new ActionExecutionInactivityWatchdog( diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java index 6584af68ec..e714708024 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java @@ -35,7 +35,6 @@ import com.google.common.eventbus.SubscriberExceptionContext; import com.google.common.eventbus.SubscriberExceptionHandler; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.Uninterruptibles; -import com.google.devtools.build.lib.actions.PackageRootResolver; import com.google.devtools.build.lib.actions.cache.ActionCache; import com.google.devtools.build.lib.actions.cache.CompactPersistentActionCache; import com.google.devtools.build.lib.actions.cache.NullActionCache; @@ -43,7 +42,6 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.BlazeVersionInfo; import com.google.devtools.build.lib.analysis.BuildView; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; -import com.google.devtools.build.lib.analysis.SkyframePackageRootResolver; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; @@ -173,7 +171,6 @@ public final class BlazeRuntime { private final Reporter reporter; private final LoadingPhaseRunner loadingPhaseRunner; private final PackageFactory packageFactory; - private final PackageRootResolver packageRootResolver; private final ConfigurationFactory configurationFactory; private final ConfiguredRuleClassProvider ruleClassProvider; private final BuildView view; @@ -219,7 +216,6 @@ public final class BlazeRuntime { this.projectFileProvider = projectFileProvider; this.skyframeExecutor = skyframeExecutor; - this.packageRootResolver = new SkyframePackageRootResolver(skyframeExecutor); this.loadingPhaseRunner = new LoadingPhaseRunner( skyframeExecutor.getPackageManager(), pkgFactory.getRuleClassNames()); @@ -527,10 +523,6 @@ public final class BlazeRuntime { return skyframeExecutor.getPackageManager(); } - public PackageRootResolver getPackageRootResolver() { - return packageRootResolver; - } - public WorkspaceStatusAction.Factory getworkspaceStatusActionFactory() { return workspaceStatusActionFactory; } @@ -882,7 +874,7 @@ public final class BlazeRuntime { if (!skyframeExecutor.hasIncrementalState()) { clearSkyframeRelevantCaches(); } - skyframeExecutor.sync(packageCacheOptions, getOutputBase(), getWorkingDirectory(), + skyframeExecutor.sync(reporter, packageCacheOptions, getOutputBase(), getWorkingDirectory(), defaultsPackageContents, commandId); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java index 64a617ec30..f0c21bf228 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java @@ -18,9 +18,11 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.eventbus.EventBus; +import com.google.devtools.build.lib.actions.PackageRootResolver; import com.google.devtools.build.lib.actions.cache.ActionCache; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.BuildView; +import com.google.devtools.build.lib.analysis.SkyframePackageRootResolver; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; @@ -139,6 +141,10 @@ public final class CommandEnvironment { return runtime.getView(); } + public PackageRootResolver getPackageRootResolver() { + return new SkyframePackageRootResolver(getSkyframeExecutor(), reporter); + } + /** * Returns the UUID that Blaze uses to identify everything logged from the current build command. * It's also used to invalidate Skyframe nodes that are specific to a certain invocation, such as diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/Builder.java b/src/main/java/com/google/devtools/build/lib/skyframe/Builder.java index 67e32b143e..2985a2c035 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/Builder.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/Builder.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.TestExecException; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible; +import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.util.AbruptExitException; import java.util.Collection; @@ -71,6 +72,7 @@ public interface Builder { */ @ThreadCompatible void buildArtifacts( + EventHandler eventHandler, Set<Artifact> artifacts, Set<ConfiguredTarget> parallelTests, Set<ConfiguredTarget> exclusiveTests, 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 df9a1b8421..9a703e805a 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 @@ -26,9 +26,7 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.events.Event; -import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.events.StoredEventHandler; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; import com.google.devtools.build.lib.packages.BuildFileNotFoundException; @@ -84,7 +82,6 @@ import javax.annotation.Nullable; */ public class PackageFunction implements SkyFunction { - private final EventHandler reporter; private final PackageFactory packageFactory; private final CachingPackageLocator packageLocator; private final Cache<PackageIdentifier, Package.LegacyBuilder> packageFunctionCache; @@ -102,7 +99,6 @@ public class PackageFunction implements SkyFunction { public static final String EXTERNAL_PACKAGE_NAME = "external"; public PackageFunction( - Reporter reporter, PackageFactory packageFactory, CachingPackageLocator pkgLocator, AtomicBoolean showLoadingProgress, @@ -110,9 +106,7 @@ public class PackageFunction implements SkyFunction { Cache<PackageIdentifier, Result> preprocessCache, AtomicInteger numPackagesLoaded, @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining) { - this.reporter = reporter; this.skylarkImportLookupFunctionForInlining = skylarkImportLookupFunctionForInlining; - // Can be null in tests. this.preludePath = packageFactory == null ? null @@ -474,7 +468,7 @@ public class PackageFunction implements SkyFunction { if (showLoadingProgress.get() && packageFunctionCache.getIfPresent(packageId) == null) { // TODO(bazel-team): don't duplicate the loading message if there are unavailable // Skylark dependencies. - reporter.handle(Event.progress("Loading package: " + packageName)); + env.getListener().handle(Event.progress("Loading package: " + packageName)); } inputSource = ParserInputSource.create(buildFilePath, buildFileValue.getSize()); } catch (IOException e) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index c186d19716..2e72186411 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.concurrent.Uninterruptibles; +import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.PackageFactory; @@ -226,13 +227,13 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } @Override - public void sync(PackageCacheOptions packageCacheOptions, Path outputBase, Path workingDirectory, - String defaultsPackageContents, UUID commandId) - throws InterruptedException, AbruptExitException { + public void sync(EventHandler eventHandler, PackageCacheOptions packageCacheOptions, + Path outputBase, Path workingDirectory, String defaultsPackageContents, UUID commandId) + throws InterruptedException, AbruptExitException { this.valueCacheEvictionLimit = packageCacheOptions.minLoadedPkgCountForCtNodeEviction; - super.sync( - packageCacheOptions, outputBase, workingDirectory, defaultsPackageContents, commandId); - handleDiffs(); + super.sync(eventHandler, packageCacheOptions, outputBase, workingDirectory, + defaultsPackageContents, commandId); + handleDiffs(eventHandler); } /** @@ -285,11 +286,11 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { * Uses diff awareness on all the package paths to invalidate changed files. */ @VisibleForTesting - public void handleDiffs() throws InterruptedException { + public void handleDiffs(EventHandler eventHandler) throws InterruptedException { if (lastAnalysisDiscarded) { // Values were cleared last build, but they couldn't be deleted because they were needed for // the execution phase. We can delete them now. - dropConfiguredTargetsNow(); + dropConfiguredTargetsNow(eventHandler); lastAnalysisDiscarded = false; } modifiedFiles = 0; @@ -307,7 +308,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } } handleDiffsWithCompleteDiffInformation(modifiedFilesByPathEntry); - handleDiffsWithMissingDiffInformation(pathEntriesWithoutDiffInformation); + handleDiffsWithMissingDiffInformation(eventHandler, pathEntriesWithoutDiffInformation); } /** @@ -333,7 +334,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { * Finds and invalidates changed files under path entries whose corresponding * {@link DiffAwareness} said all files may have been modified. */ - private void handleDiffsWithMissingDiffInformation( + private void handleDiffsWithMissingDiffInformation(EventHandler eventHandler, Set<Pair<Path, DiffAwarenessManager.ProcessableModifiedFileSet>> pathEntriesWithoutDiffInformation) throws InterruptedException { if (pathEntriesWithoutDiffInformation.isEmpty() && Iterables.isEmpty(customDirtinessCheckers)) { @@ -344,7 +345,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { // have actually been invalidated (recall that invalidation happens at the beginning of the // next evaluate() call), because checking those is a waste of time. buildDriver.evaluate(ImmutableList.<SkyKey>of(), false, - DEFAULT_THREAD_COUNT, reporter); + DEFAULT_THREAD_COUNT, eventHandler); FilesystemValueChecker fsvc = new FilesystemValueChecker(memoizingEvaluator, tsgm, null); // We need to manually check for changes to known files. This entails finding all dirty file @@ -439,12 +440,12 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } @Override - public void invalidateFilesUnderPathForTesting(ModifiedFileSet modifiedFileSet, Path pathEntry) - throws InterruptedException { + public void invalidateFilesUnderPathForTesting(EventHandler eventHandler, + ModifiedFileSet modifiedFileSet, Path pathEntry) throws InterruptedException { if (lastAnalysisDiscarded) { // Values were cleared last build, but they couldn't be deleted because they were needed for // the execution phase. We can delete them now. - dropConfiguredTargetsNow(); + dropConfiguredTargetsNow(eventHandler); lastAnalysisDiscarded = false; } Differencer.Diff diff; @@ -529,7 +530,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { * <p>WARNING: Note that a call to this method leaves legacy data inconsistent with Skyframe. * The next build should clear the legacy caches. */ - private void dropConfiguredTargetsNow() { + private void dropConfiguredTargetsNow(final EventHandler eventHandler) { dropConfiguredTargets(); // Run the invalidator to actually delete the values. try { @@ -538,7 +539,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { @Override public Void call() throws InterruptedException { buildDriver.evaluate(ImmutableList.<SkyKey>of(), false, - ResourceUsage.getAvailableProcessors(), reporter); + ResourceUsage.getAvailableProcessors(), eventHandler); return null; } }); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index 0c6d78e800..5d86036774 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -192,6 +192,7 @@ public final class SkyframeBuildView { * @return the configured targets that should be built along with a WalkableGraph of the analysis. */ public SkyframeAnalysisResult configureTargets( + EventHandler eventHandler, List<ConfiguredTargetKey> values, List<AspectKey> aspectKeys, EventBus eventBus, @@ -250,12 +251,12 @@ public final class SkyframeBuildView { try { ex.rethrowTyped(); } catch (MutableActionGraph.ActionConflictException ace) { - ace.reportTo(skyframeExecutor.getReporter()); + ace.reportTo(eventHandler); String errorMsg = "Analysis of target '" + bad.getKey().getOwner().getLabel() + "' failed; build aborted"; throw new ViewCreationFailedException(errorMsg); } catch (ArtifactPrefixConflictException apce) { - skyframeExecutor.getReporter().handle(Event.error(apce.getMessage())); + eventHandler.handle(Event.error(apce.getMessage())); } throw new ViewCreationFailedException(ex.getMessage()); } @@ -265,14 +266,14 @@ public final class SkyframeBuildView { ErrorInfo errorInfo = error.getValue(); assertSaneAnalysisError(errorInfo, topLevel); skyframeExecutor.getCyclesReporter().reportCycles(errorInfo.getCycleInfo(), topLevel, - skyframeExecutor.getReporter()); + eventHandler); Throwable cause = errorInfo.getException(); Preconditions.checkState(cause != null || !Iterables.isEmpty(errorInfo.getCycleInfo()), errorInfo); String errorMsg = "Analysis of target '" + ConfiguredTargetValue.extractLabel(topLevel) + "' failed; build aborted"; if (cause instanceof ActionConflictException) { - ((ActionConflictException) cause).reportTo(skyframeExecutor.getReporter()); + ((ActionConflictException) cause).reportTo(eventHandler); } throw new ViewCreationFailedException(errorMsg); } @@ -286,7 +287,7 @@ public final class SkyframeBuildView { assertSaneAnalysisError(errorInfo, errorKey); skyframeExecutor.getCyclesReporter().reportCycles(errorInfo.getCycleInfo(), errorKey, - skyframeExecutor.getReporter()); + eventHandler); // We try to get the root cause key first from ErrorInfo rootCauses. If we don't have one // we try to use the cycle culprit if the error is a cycle. Otherwise we use the top-level // error key. @@ -300,9 +301,9 @@ public final class SkyframeBuildView { } Exception cause = errorInfo.getException(); if (cause instanceof ActionConflictException) { - ((ActionConflictException) cause).reportTo(skyframeExecutor.getReporter()); + ((ActionConflictException) cause).reportTo(eventHandler); } - skyframeExecutor.getReporter().handle( + eventHandler.handle( Event.warn("errors encountered while analyzing target '" + label.getLabel() + "': it will not be built")); eventBus.post(new AnalysisFailureEvent( @@ -316,13 +317,13 @@ public final class SkyframeBuildView { try { ex.rethrowTyped(); } catch (MutableActionGraph.ActionConflictException ace) { - ace.reportTo(skyframeExecutor.getReporter()); - skyframeExecutor.getReporter() + ace.reportTo(eventHandler); + eventHandler .handle(Event.warn("errors encountered while analyzing target '" + bad.getKey().getOwner().getLabel() + "': it will not be built")); } catch (ArtifactPrefixConflictException apce) { if (reportedExceptions.add(apce)) { - skyframeExecutor.getReporter().handle(Event.error(apce.getMessage())); + eventHandler.handle(Event.error(apce.getMessage())); } } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 103932c3d2..05ceedd252 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -155,7 +155,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { protected MemoizingEvaluator memoizingEvaluator; private final MemoizingEvaluator.EmittedEventState emittedEventState = new MemoizingEvaluator.EmittedEventState(); - protected final Reporter reporter; private final PackageFactory pkgFactory; private final WorkspaceStatusAction.Factory workspaceStatusActionFactory; private final BlazeDirectories directories; @@ -272,7 +271,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { boolean errorOnExternalFiles) { // Strictly speaking, these arguments are not required for initialization, but all current // callsites have them at hand, so we might as well set them during construction. - this.reporter = Preconditions.checkNotNull(reporter); this.evaluatorSupplier = evaluatorSupplier; this.pkgFactory = pkgFactory; this.pkgFactory.setSyscalls(syscalls); @@ -282,7 +280,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { new SkyframePackageLoader(), new SkyframeTransitivePackageLoader(), new SkyframeTargetPatternEvaluator(this), syscalls, cyclesReporter, pkgLocator, numPackagesLoaded, this); - this.errorEventListener = this.reporter; + this.errorEventListener = Preconditions.checkNotNull(reporter); this.resourceManager = ResourceManager.instance(); this.skyframeActionExecutor = new SkyframeActionExecutor(reporter, resourceManager, eventBus, statusReporterRef); @@ -341,7 +339,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { map.put( SkyFunctions.PACKAGE, newPackageFunction( - reporter, pkgFactory, packageManager, showLoadingProgress, @@ -391,7 +388,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } protected PackageFunction newPackageFunction( - Reporter reporter, PackageFactory pkgFactory, PackageManager packageManager, AtomicBoolean showLoadingProgress, @@ -400,7 +396,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { AtomicInteger numPackagesLoaded, RuleClassProvider ruleClassProvider) { return new PackageFunction( - reporter, pkgFactory, packageManager, showLoadingProgress, @@ -670,19 +665,20 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } /** Returns the build-info.txt and build-changelist.txt artifacts. */ - public Collection<Artifact> getWorkspaceStatusArtifacts() throws InterruptedException { + public Collection<Artifact> getWorkspaceStatusArtifacts(EventHandler eventHandler) + throws InterruptedException { // Should already be present, unless the user didn't request any targets for analysis. EvaluationResult<WorkspaceStatusValue> result = buildDriver.evaluate( ImmutableList.of(WorkspaceStatusValue.SKY_KEY), /*keepGoing=*/true, /*numThreads=*/1, - reporter); + eventHandler); WorkspaceStatusValue value = Preconditions.checkNotNull(result.get(WorkspaceStatusValue.SKY_KEY)); return ImmutableList.of(value.getStableArtifact(), value.getVolatileArtifact()); } // TODO(bazel-team): Make this take a PackageIdentifier. - public Map<PathFragment, Root> getArtifactRoots(Iterable<PathFragment> execPaths) - throws PackageRootResolutionException { + public Map<PathFragment, Root> getArtifactRoots(final EventHandler eventHandler, + Iterable<PathFragment> execPaths) throws PackageRootResolutionException { final List<SkyKey> packageKeys = new ArrayList<>(); for (PathFragment execPath : execPaths) { Preconditions.checkArgument(!execPath.isAbsolute(), execPath); @@ -697,7 +693,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { public EvaluationResult<ContainingPackageLookupValue> call() throws InterruptedException { synchronized (valueLookupLock) { return buildDriver.evaluate( - packageKeys, /*keepGoing=*/true, /*numThreads=*/1, reporter); + packageKeys, /*keepGoing=*/true, /*numThreads=*/1, eventHandler); } } }); @@ -740,10 +736,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { LOG.info(String.format("Found %d modified files from last build", modifiedFiles)); } - public Reporter getReporter() { - return reporter; - } - public EventBus getEventBus() { return eventBus.get(); } @@ -1308,8 +1300,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { * <p>May throw an {@link InterruptedException}, which means that no values have been invalidated. */ @VisibleForTesting - public abstract void invalidateFilesUnderPathForTesting(ModifiedFileSet modifiedFileSet, - Path pathEntry) throws InterruptedException; + public abstract void invalidateFilesUnderPathForTesting(EventHandler eventHandler, + ModifiedFileSet modifiedFileSet, Path pathEntry) throws InterruptedException; /** * Invalidates SkyFrame values that may have failed for transient reasons. @@ -1586,13 +1578,15 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { @ThreadCompatible public abstract void updateLoadedPackageSet(Set<PackageIdentifier> loadedPackages); - public void sync(PackageCacheOptions packageCacheOptions, Path outputBase, Path workingDirectory, - String defaultsPackageContents, UUID commandId) throws InterruptedException, + public void sync(EventHandler eventHandler, PackageCacheOptions packageCacheOptions, + Path outputBase, Path workingDirectory, String defaultsPackageContents, UUID commandId) + throws InterruptedException, AbruptExitException{ preparePackageLoading( createPackageLocator( - packageCacheOptions, outputBase, directories.getWorkspace(), workingDirectory), + eventHandler, packageCacheOptions, outputBase, directories.getWorkspace(), + workingDirectory), packageCacheOptions.defaultVisibility, packageCacheOptions.showLoadingProgress, packageCacheOptions.globbingThreads, defaultsPackageContents, commandId); setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.deletedPackages)); @@ -1601,10 +1595,11 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { invalidateTransientErrors(); } - protected PathPackageLocator createPackageLocator(PackageCacheOptions packageCacheOptions, - Path outputBase, Path workspace, Path workingDirectory) throws AbruptExitException { + protected PathPackageLocator createPackageLocator(EventHandler eventHandler, + PackageCacheOptions packageCacheOptions, Path outputBase, Path workspace, + Path workingDirectory) throws AbruptExitException { return PathPackageLocator.create( - outputBase, packageCacheOptions.packagePath, getReporter(), workspace, workingDirectory); + outputBase, packageCacheOptions.packagePath, eventHandler, workspace, workingDirectory); } private CyclesReporter createCyclesReporter() { |