Fix state tracking for actions that run under multiple strategies.

Each strategy can independently progress through the sequence of phases, but from a UI standpoint, we only care about (1) the set of strategies that have reported progress so far, and (2) the latest phase reported across all strategies.

In addition, each action should contribute at most one unit to the action count, regardless of the number of strategies applied to it.

This is not only simpler to track, but leads to more informative output in certain contexts. For example, if an action is simultaneously looked up in a remote cache and executed locally, we should not hide the fact that it was looked up once local execution starts (which could be an extremely short timespan). This is currently worked around by emitting the "running" event after the cache lookup is done [1], which is arguably incorrect since the action isn't running yet at that point.

Related to #7345.

[1] https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java;l=155;drc=32e4f23ec67909e92313be4d3334b62ccb490d55

PiperOrigin-RevId: 516782203
Change-Id: I710ac7199ec7a5fa5911788e3343445d5e57c85a
2 files changed
tree: d5f488c9dd5ea85d2955d9ebe8d9b369d527f1e3
  1. .bazelci/
  2. .github/
  3. examples/
  4. scripts/
  5. site/
  6. src/
  7. third_party/
  8. tools/
  9. .bazelrc
  10. .gitattributes
  11. .gitignore
  12. AUTHORS
  13. BUILD
  14. CHANGELOG.md
  15. CODE_OF_CONDUCT.md
  16. CODEOWNERS
  17. combine_distfiles.py
  18. combine_distfiles_to_tar.sh
  19. compile.sh
  20. CONTRIBUTING.md
  21. CONTRIBUTORS
  22. distdir.bzl
  23. distdir_deps.bzl
  24. LICENSE
  25. maven_install.json
  26. MODULE.bazel
  27. README.md
  28. SECURITY.md
  29. WORKSPACE
  30. WORKSPACE.bzlmod
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Reporting a Vulnerability

To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.

Contributing to Bazel

See CONTRIBUTING.md

Build status