From 8938d62ba9b77d04130750ac34d23659cd500ded Mon Sep 17 00:00:00 2001 From: janakr Date: Tue, 19 Jun 2018 00:53:27 -0700 Subject: Stop holding on to the Action and ActionKeyContext in ActionConflictException. We can construct the exception message eagerly, since it is going to be thrown with very high likelihood in any case. The complex objects inside it made it hard to serialize. PiperOrigin-RevId: 201130522 --- .../devtools/build/lib/actions/MutableActionGraph.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/google/devtools/build/lib/actions/MutableActionGraph.java b/src/main/java/com/google/devtools/build/lib/actions/MutableActionGraph.java index 24a74ad28c..03ac629dc8 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/MutableActionGraph.java +++ b/src/main/java/com/google/devtools/build/lib/actions/MutableActionGraph.java @@ -63,11 +63,9 @@ public interface MutableActionGraph extends ActionGraph { */ final class ActionConflictException extends Exception { - private final ActionKeyContext actionKeyContext; private final Artifact artifact; - private final ActionAnalysisMetadata previousAction; - private final ActionAnalysisMetadata attemptedAction; - + private final String suffix; + private static final int MAX_DIFF_ARTIFACTS_TO_REPORT = 5; public ActionConflictException( @@ -81,10 +79,8 @@ public interface MutableActionGraph extends ActionGraph { artifact.prettyPrint(), previousAction.prettyPrint(), attemptedAction.prettyPrint())); - this.actionKeyContext = actionKeyContext; this.artifact = artifact; - this.previousAction = previousAction; - this.attemptedAction = attemptedAction; + this.suffix = suffix(actionKeyContext, attemptedAction, previousAction); } public Artifact getArtifact() { @@ -96,7 +92,7 @@ public interface MutableActionGraph extends ActionGraph { "file '" + artifact.prettyPrint() + "' is generated by these conflicting actions:\n" - + suffix(actionKeyContext, attemptedAction, previousAction); + + suffix; eventListener.handle(Event.error(msg)); } -- cgit v1.2.3