Track the entire OutputService instead of just the BatchStatter.

--
MOS_MIGRATED_REVID=107800790
diff --git a/src/main/java/com/google/devtools/build/lib/exec/OutputService.java b/src/main/java/com/google/devtools/build/lib/exec/OutputService.java
index 2e3d883..2a48b5c 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/OutputService.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/OutputService.java
@@ -14,11 +14,15 @@
 
 package com.google.devtools.build.lib.exec;
 
+import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.BuildFailedException;
+import com.google.devtools.build.lib.actions.EnvironmentalExecException;
 import com.google.devtools.build.lib.actions.ExecException;
+import com.google.devtools.build.lib.actions.cache.MetadataHandler;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.util.AbruptExitException;
 import com.google.devtools.build.lib.vfs.BatchStat;
+import com.google.devtools.build.lib.vfs.ModifiedFileSet;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
@@ -53,10 +57,11 @@
    * Start the build.
    *
    * @param buildId the UUID build identifier
+   * @return a ModifiedFileSet of changed output files.
    * @throws BuildFailedException if build preparation failed
    * @throws InterruptedException
    */
-  void startBuild(UUID buildId)
+  ModifiedFileSet startBuild(UUID buildId)
       throws BuildFailedException, AbruptExitException, InterruptedException;
 
   /**
@@ -67,6 +72,10 @@
    */
   void finalizeBuild(boolean buildSuccessful) throws BuildFailedException, AbruptExitException;
 
+  /** Notify the output service of a completed action. */
+  void finalizeAction(Action action, MetadataHandler metadataHandler)
+      throws IOException, EnvironmentalExecException;
+
   /**
    * Stages the given tool from the package path, possibly copying it to local disk.
    *