diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java index 6b9d374f0f..86fa2410b7 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java +++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java @@ -38,6 +38,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; +import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; @@ -302,16 +303,18 @@ public abstract class AbstractAction implements Action, SkylarkValue { /** * See the javadoc for {@link com.google.devtools.build.lib.actions.Action} and {@link * ActionExecutionMetadata#getKey(ActionKeyContext)} for the contract for {@link - * #computeKey(ActionKeyContext)}. + * #computeKey(ActionKeyContext, Fingerprint)}. */ - protected abstract String computeKey(ActionKeyContext actionKeyContext) + protected abstract void computeKey(ActionKeyContext actionKeyContext, Fingerprint fp) throws CommandLineExpansionException; @Override public final synchronized String getKey(ActionKeyContext actionKeyContext) { if (cachedKey == null) { try { - cachedKey = computeKey(actionKeyContext); + Fingerprint fp = new Fingerprint(); + computeKey(actionKeyContext, fp); + cachedKey = fp.hexDigestAndReset(); } catch (CommandLineExpansionException e) { cachedKey = KEY_ERROR; } |