Hello all, a question I did not get to ask at the monthly today: Do implementations of ActionCache add in an arbitrarily sourced "salt" or "epoch" value to the basis of the hash? The intent is to be able to disown the contents of a cache universe because of bugs or cache entry poisoning by bad tools. We build these into our internal systems. At the operator level we can discard the entire cache - obviously a major event, and rarely used. At the repo level we allow a team to discard the cache for just their repo, either self-directed or directed by our support.
In actual implementation at the repo level we typically add the hash of a specific file's contents (if present), and the epoch in that file is typically just a counter "1", "2", "3", etc. incremented on each breakaway from a previous cache universe. At the operational level it's a similar type of operational configuration of another string that is hashed and added as another salt to the hash.
There is no specification for this possibility in the ActionCache hash generation algorithm described in protobuf. GetActionResultRequest.action_digest is of necessity the hash of the Action in the CAS and cannot be salted like this. The Action itself aside from instance_name (not dedicated for this purpose and dangerous to attempt to reuse) does not contain a salt that would change its hash in GetActionResultRequest.
Does anyone else do this? And if so, how is it implemented within the Remote Exec framework?
If not, would this make a suitable issue+PR-proposal?
Erik Mavrinac