commit | 3edc5affa1f3bf3053821e0aa762395cb9475376 | [log] [tgz] |
---|---|---|
author | arostovtsev <arostovtsev@google.com> | Fri Nov 13 14:39:08 2020 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Nov 13 14:40:17 2020 -0800 |
tree | 78297276779bc4ecc0dd1f56c965d6298a99ed32 | |
parent | bc2c23f32b0704276052e8f70d4c6746498c9fa4 [diff] |
Explicitly interrupt a cancelled strategy instead of relying on a misleading checkState Future.cancel() is expected to return false if the future is done or had been cancelled previously - a situation that often arises in stopBranch(). We therefore want to remove the checkState for Future.cancel()'s return value. However, it turned out that removing the checkState by itself would cause some dynamic builds to fail: if the future of the strategy calling stopBranch() was itself cancelled but not interrupted (a situation that sometimes arises), both branches could attempt to write outputs. The IllegalStateException thrown by checkState had the effect of interrupting the cancelled branch, allowing the build to succeed most of the time, as long as the exception got caught somewhere (which it often was). We therefore want to replace the implicit effect of the misleading checkState with an explicit check for a cancelled strategy and an explicit interruption. RELNOTES: None. PiperOrigin-RevId: 342340917
{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.
Follow our tutorials:
See CONTRIBUTING.md