Track finalizeActions setting explicitly instead of using the output service as a proxy for that.
PiperOrigin-RevId: 211504269
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
index 19ad1d9..4215391 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
@@ -164,6 +164,7 @@
private final AtomicReference<ActionExecutionStatusReporter> statusReporterRef;
private OutputService outputService;
+ private boolean finalizeActions;
private final Supplier<ImmutableList<Root>> sourceRootSupplier;
SkyframeActionExecutor(
@@ -357,6 +358,8 @@
this.actionCacheChecker = Preconditions.checkNotNull(actionCacheChecker);
// Don't cache possibly stale data from the last build.
this.options = options;
+ // Cache the finalizeActions value for performance, since we consult it on every action.
+ this.finalizeActions = options.getOptions(BuildRequestOptions.class).finalizeActions;
this.outputService = outputService;
}
@@ -1022,7 +1025,7 @@
}
}
- if (outputService != null) {
+ if (outputService != null && finalizeActions) {
try {
outputService.finalizeAction(action, metadataHandler);
} catch (EnvironmentalExecException | IOException e) {
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 e5fd307..14c7a58 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
@@ -1314,7 +1314,7 @@
executor,
options,
actionCacheChecker,
- options.getOptions(BuildRequestOptions.class).finalizeActions ? outputService : null);
+ outputService);
}
resourceManager.resetResourceUsage();