aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2015-09-24 09:52:53 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2015-09-24 14:22:07 +0000
commit5b9009b39c8549a99ba37d2739fb075997ab500f (patch)
tree8262fe94134b86a3c8e16c47b4a60f48198a2a83 /src/main/java/com/google/devtools
parent4eb82ec1fe39eff42aa5b1b4246fd941183abe6a (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SkyframePackageRootResolver.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/Builder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java41
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() {