Fix dropped action dependency when input artifact parent component is running. In CriticalPathComputer.addArtifactDependency, when an input artifact has a parent (such as a TreeFileArtifact inside a SpecialArtifact / TreeArtifact), SELECT_LONGER_COMPONENT was used to select between the direct input artifact component and its parent component. If the parent component had a longer aggregated elapsed time but was currently running (isRunning() == true, e.g. during concurrent template action executions, rewinding, or cache hit retries), SELECT_LONGER_COMPONENT selected the running parent component over the completed child component. The subsequent check `if (depComponent != null && !depComponent.isRunning())` then evaluated to false, completely dropping the valid, completed dependency and resulting in an artificial gap in the critical path. This change evaluates both the direct input artifact component and each parent component in the chain individually, invoking addDepInfo on any completed (non-running) component. PiperOrigin-RevId: 972431794 Change-Id: I77f93d0ff75b85a1ae6c0822ece126b3711654e9
{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.
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.
See CONTRIBUTING.md