commit | 33b9f9dce8935504dd2524827d651b48f4c1ce65 | [log] [tgz] |
---|---|---|
author | jmmv <jmmv@google.com> | Tue Oct 22 08:47:19 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Oct 22 08:48:16 2019 -0700 |
tree | 3f0b3fc454a238ef92285ce914d81d0db9231b9b | |
parent | e5d1d43aac4be557cadde1c5d596590a6bef8912 [diff] |
Fix deleteTreesBelow crash if top directory goes missing. This is a repeat of https://github.com/bazelbuild/bazel/commit/49076cc6694e10170c2640048adbc1b1efd5c810, which was rolled back because the new tests added here broke when testing InMemoryFileSystem. As it turns out, these new tests exposed a bug of the same kind in that other file system's delete() implementation, which I'm fixing now. The deleteTreesBelow method starts with a check to see if the given path is a directory and aborts early if not. This was masking a bug (introduced in https://github.com/bazelbuild/bazel/commit/fac322b1ef7a9acbe71f3718143c0dae43fb5833) in the JNI code where we would not gracefully handle errors if any syscalls failed on this top-level directory. Fix this by removing an invalid assertion and add a race condition test to ensure this works and that we get valid error messages. While doing this, replace all assert()s in this algorithm with CHECK()s for consistency with the rest of the file. RELNOTES: None. PiperOrigin-RevId: 276072383
{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