tree e5afc369efe84a32ca8f71f4cb5aae906eac94da
parent 82e6b6a3b9589b93f4abcf3eb0f14cd1d50008ff
author ajurkowski <ajurkowski@google.com> 1594056455 -0700
committer Copybara-Service <copybara-worker@google.com> 1594056536 -0700

Add a warning when shared actions detection can be producing a false positive.

Shared actions detection is based on the action key -- if 2 actions have the
same key, we will consider them equal. The problem is that we cannot reliably
construct the action key for actions which have tree artifact inputs.

Example:

```
args = ctx.actions.args()
args.add_all([tree_artifact], map_each=function, expand_directories=True)
action = ctx.actions.run(arguments=[args], ...)
```

For such action, we will constuct the key by running `function` on the
directory itself (rather than expanded contents of it). This means that for 2
actions with equal inputs and different functions, as long as their result is
the same when called for the directory, we will consider them equal. Please
note that it does not imply that their result for files within the directory
are actually the same.

As a result of that problem, we may falsly share an action and proceed with a
build which should otherwise fail. In order to aid the users in debugging
issues (like non-determinism) of such builds, add a warning about the potential
problem.

PiperOrigin-RevId: 319805921
