commit | 0289418a45e0ca220474d1f55e11a4c9bffff489 | [log] [tgz] |
---|---|---|
author | nikola-sh <nikola-sh@narod.ru> | Fri Jan 31 05:43:54 2020 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Jan 31 05:44:50 2020 -0800 |
tree | cd05a9182cc5bd4c17f5ba77291c4baaa809a7d9 | |
parent | 50bfa101535da0f4c527c9bf0c65d7a45c30f1e4 [diff] |
Fix races in CanAccessDirectory If several bazel processes are starting concurrently some of them can fail to start with error ```Output base directory ... must be readable and writable.``` It happens because CanAccessDirectory doesn't handle `NTSTATUS` `STATUS_DELETE_PENDING` for file. `STATUS_DELETE_PENDING` occured if `DeleteFile` finished successfully but there are open handles for the file. `STATUS_DELETE_PENDING` is converted to `ERROR_ACCESS_DENIED` on Win32 level so client code can't distinguish pending deletion from real denied access. To workaround this problem we can create check-file with unique name, for example with current thread id. P.S. This problem is reproducible on Windows versions prior to Windows 10 19H1. Closes #10649. PiperOrigin-RevId: 292529503
{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