Move up discarding the analysis cache so that it is done prior to invoking executionPhaseStarting on any ActionContextProvider.

PiperOrigin-RevId: 258678792
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 187bead..980f015 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
@@ -321,6 +321,15 @@
     Throwable catastrophe = null;
     boolean buildCompleted = false;
     try {
+      if (request.getViewOptions().discardAnalysisCache
+          || !skyframeExecutor.tracksStateForIncrementality()) {
+        // Free memory by removing cache entries that aren't going to be needed.
+        try (SilentCloseable c = Profiler.instance().profile("clearAnalysisCache")) {
+          env.getSkyframeBuildView()
+              .clearAnalysisCache(analysisResult.getTargetsToBuild(), analysisResult.getAspects());
+        }
+      }
+
       for (ActionContextProvider actionContextProvider : actionContextProviders) {
         try (SilentCloseable c =
             Profiler.instance().profile(actionContextProvider + ".executionPhaseStarting")) {
@@ -334,15 +343,6 @@
       }
       skyframeExecutor.drainChangedFiles();
 
-      if (request.getViewOptions().discardAnalysisCache
-          || !skyframeExecutor.tracksStateForIncrementality()) {
-        // Free memory by removing cache entries that aren't going to be needed.
-        try (SilentCloseable c = Profiler.instance().profile("clearAnalysisCache")) {
-          env.getSkyframeBuildView()
-              .clearAnalysisCache(analysisResult.getTargetsToBuild(), analysisResult.getAspects());
-        }
-      }
-
       try (SilentCloseable c = Profiler.instance().profile("configureResourceManager")) {
         configureResourceManager(request);
       }