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();