aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
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/build/lib/skyframe/SkyframeExecutor.java
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/build/lib/skyframe/SkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java41
1 files changed, 18 insertions, 23 deletions
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() {