aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
diff options
context:
space:
mode:
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.java9
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;
}