diff options
author | 2015-05-15 20:46:13 +0000 | |
---|---|---|
committer | 2015-05-18 09:16:50 +0000 | |
commit | 0b09d289d52351b3e67d7a6b9b64e9fe24cf2893 (patch) | |
tree | 599a49a23338e1e17af604f25f5a25c94e49045f /src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | |
parent | 6961ad19c8ed7f4d9d7603d0c12fe76737c001d3 (diff) |
Add some basic logging around DiffAwareness
Some simple logging to tell us what strategy we are using and how many
files we detect as modified. Useful for debugging slow (or fast) builds.
--
MOS_MIGRATED_REVID=93745644
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index f8265c9101..970c120a8f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -68,12 +69,16 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.Callable; +import java.util.logging.Logger; /** * A SkyframeExecutor that implicitly assumes that builds can be done incrementally from the most * recent build. In other words, builds are "sequenced". */ public final class SequencedSkyframeExecutor extends SkyframeExecutor { + + private static final Logger LOG = Logger.getLogger(SequencedSkyframeExecutor.class.getName()); + /** Lower limit for number of loaded packages to consider clearing CT values. */ private int valueCacheEvictionLimit = -1; @@ -279,8 +284,11 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { DiffAwarenessManager.ProcessableModifiedFileSet modifiedFileSet = diffAwarenessManager.getDiff(pathEntry); if (modifiedFileSet.getModifiedFileSet().treatEverythingAsModified()) { + LOG.info("DiffAwareness treating all sources as modified for " + pathEntry); pathEntriesWithoutDiffInformation.add(Pair.of(pathEntry, modifiedFileSet)); } else { + LOG.info(diffInfoLogString(pathEntry, + modifiedFileSet.getModifiedFileSet().modifiedSourceFiles())); modifiedFilesByPathEntry.put(pathEntry, modifiedFileSet); } } @@ -288,6 +296,28 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { handleDiffsWithMissingDiffInformation(pathEntriesWithoutDiffInformation); } + private static String diffInfoLogString(Path pathEntry, + ImmutableSet<PathFragment> modifiedFileSet) { + int numModified = modifiedFileSet.size(); + StringBuilder result = new StringBuilder("DiffAwareness found ") + .append(numModified) + .append(" modified source files for ") + .append(pathEntry.getPathString()); + + if (numModified > 0) { + Iterable<String> trimmed = PathFragment.safePathStrings( + Iterables.limit(modifiedFileSet, 5)); + result.append(": ") + .append(Joiner.on(", ").join(trimmed)); + + if (numModified > 5) { + result.append(", ..."); + } + } + + return result.toString(); + } + /** * Invalidates files under path entries whose corresponding {@link DiffAwareness} gave an exact * diff. Removes entries from the given map as they are processed. All of the files need to be |