diff options
author | Nathan Harmata <nharmata@google.com> | 2016-01-13 19:42:45 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-01-14 09:53:19 +0000 |
commit | 483ded980b2a3f4128dbc42419172068c51147a4 (patch) | |
tree | f48c963c7bbdfcba33c97131dbc96414e8002c95 /src/main/java | |
parent | ee624453d9f5dd908d721abb4663246c70bf4509 (diff) |
Use AutoProfiler in SkyQueryEnvironment#init. Also augment the WalkableGraphFactory interface with a hook to inform the factory when the WalkableGraph is done being used.
--
MOS_MIGRATED_REVID=112074284
Diffstat (limited to 'src/main/java')
3 files changed, 17 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java index 7df803396a..28431bec76 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java @@ -42,7 +42,7 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator; -import com.google.devtools.build.lib.profiler.Profiler; +import com.google.devtools.build.lib.profiler.AutoProfiler; import com.google.devtools.build.lib.query2.engine.AllRdepsFunction; import com.google.devtools.build.lib.query2.engine.Callback; import com.google.devtools.build.lib.query2.engine.QueryEvalResult; @@ -141,14 +141,12 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> { } private void init() throws InterruptedException { - long startTime = Profiler.nanoTimeMaybe(); - EvaluationResult<SkyValue> result = - graphFactory.prepareAndGet(universeScope, parserPrefix, loadingPhaseThreads, eventHandler); - graph = result.getWalkableGraph(); - long duration = Profiler.nanoTimeMaybe() - startTime; - if (duration > 0) { - LOG.info("Spent " + (duration / 1000 / 1000) + " ms on evaluation and walkable graph"); + EvaluationResult<SkyValue> result; + try (AutoProfiler p = AutoProfiler.logged("evaluation and walkable graph", LOG)) { + result = graphFactory.prepareAndGet(universeScope, parserPrefix, loadingPhaseThreads, + eventHandler); } + graph = result.getWalkableGraph(); SkyKey universeKey = graphFactory.getUniverseKey(universeScope, parserPrefix); universeTargetPatternKeys = @@ -178,7 +176,9 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> { // errors here. eventHandler.resetErrors(); init(); - return super.evaluateQuery(expr, callback); + QueryEvalResult result = super.evaluateQuery(expr, callback); + graphFactory.afterUse(graph); + return result; } private Map<Target, Collection<Target>> makeTargetsMap(Map<SkyKey, Iterable<SkyKey>> input) { 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 20b3777fe2..1bae0b7276 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 @@ -136,6 +136,7 @@ import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; +import com.google.devtools.build.skyframe.WalkableGraph; import com.google.devtools.build.skyframe.WalkableGraph.WalkableGraphFactory; import java.io.IOException; @@ -1455,6 +1456,10 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { return evaluationResult; } + @Override + public void afterUse(WalkableGraph walkableGraph) { + } + /** * Get metadata related to the prepareAndGet() lookup. Resulting data is specific to the * underlying evaluation implementation. diff --git a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java index 0c073a7565..75c347f8fe 100644 --- a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java +++ b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java @@ -80,6 +80,9 @@ public interface WalkableGraph { EvaluationResult<SkyValue> prepareAndGet(Collection<String> roots, String offset, int numThreads, EventHandler eventHandler) throws InterruptedException; + /** Consumers of the graph given by {@link #prepareAndGet} may call this after they are done. */ + void afterUse(WalkableGraph walkableGraph); + /** Returns the {@link SkyKey} that defines this universe. */ SkyKey getUniverseKey(Collection<String> roots, String offset); } |