aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
diff options
context:
space:
mode:
authorGravatar Michajlo Matijkiw <michajlo@google.com>2015-05-15 20:46:13 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-05-18 09:16:50 +0000
commit0b09d289d52351b3e67d7a6b9b64e9fe24cf2893 (patch)
tree599a49a23338e1e17af604f25f5a25c94e49045f /src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
parent6961ad19c8ed7f4d9d7603d0c12fe76737c001d3 (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.java30
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