[7.0.0] Fix sandbox stashes not being keyed by mnemonic (#20103)
Due to a flipped ternary operator, all sandbox directories were stashed
for reuse under the fixed mnemonic `_NoMnemonic_`.
Closes #20067.
Commit
https://github.com/bazelbuild/bazel/commit/9b910798b6f5a9563d301b53b2bcdf14b4926a0d
PiperOrigin-RevId: 580491602
Change-Id: If8daf935e2aed060a4dd161fe5d1e612a2c2ed4d
Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im>
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java b/src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java
index 977f06d..57a0935 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java
@@ -61,7 +61,7 @@
sandboxDebugPath,
statisticsPath,
mnemonic);
- this.mnemonic = isNullOrEmpty(mnemonic) ? mnemonic : "_NoMnemonic_";
+ this.mnemonic = isNullOrEmpty(mnemonic) ? "_NoMnemonic_" : mnemonic;
}
@Override
diff --git a/src/test/shell/integration/sandboxing_test.sh b/src/test/shell/integration/sandboxing_test.sh
index 7825fa8..f23d95c 100755
--- a/src/test/shell/integration/sandboxing_test.sh
+++ b/src/test/shell/integration/sandboxing_test.sh
@@ -900,17 +900,17 @@
local sandbox_stash="${output_base}/sandbox_stash"
[[ -d "${sandbox_stash}" ]] \
|| fail "${sandbox_stash} not present"
- [[ -d "${sandbox_stash}/_NoMnemonic_/3" ]] \
+ [[ -d "${sandbox_stash}/Genrule/3" ]] \
|| fail "${sandbox_stash} did not stash anything"
- [[ -L "${sandbox_stash}/_NoMnemonic_/3/$execroot_reldir/pkg/a.txt" ]] \
+ [[ -L "${sandbox_stash}/Genrule/3/$execroot_reldir/pkg/a.txt" ]] \
|| fail "${sandbox_stash} did not have a link to a.txt"
bazel build --reuse_sandbox_directories //pkg:b >"${TEST_log}" 2>&1 \
|| fail "Expected build to succeed"
- ls -R "${sandbox_stash}/_NoMnemonic_/"
- [[ ! -L "${sandbox_stash}/_NoMnemonic_/6/$execroot_reldir/pkg/a.txt" ]] \
+ ls -R "${sandbox_stash}/Genrule/"
+ [[ ! -L "${sandbox_stash}/Genrule/6/$execroot_reldir/pkg/a.txt" ]] \
|| fail "${sandbox_stash} should no longer have a link to a.txt"
- [[ -L "${sandbox_stash}/_NoMnemonic_/6/$execroot_reldir/pkg/b.txt" ]] \
+ [[ -L "${sandbox_stash}/Genrule/6/$execroot_reldir/pkg/b.txt" ]] \
|| fail "${sandbox_stash} should now have a link to b.txt"
bazel clean
@@ -950,18 +950,18 @@
local sandbox_stash="${output_base}/sandbox_stash"
[[ -d "${sandbox_stash}" ]] \
|| fail "${sandbox_stash} not present"
- [[ -d "${sandbox_stash}/_NoMnemonic_/3" ]] \
+ [[ -d "${sandbox_stash}/Genrule/3" ]] \
|| fail "${sandbox_stash} did not stash anything"
- [[ -L "${sandbox_stash}/_NoMnemonic_/3/$execroot_reldir/pkg/a.txt" ]] \
+ [[ -L "${sandbox_stash}/Genrule/3/$execroot_reldir/pkg/a.txt" ]] \
|| fail "${sandbox_stash} did not have a link to a.txt"
bazel build --reuse_sandbox_directories --incompatible_sandbox_hermetic_tmp \
//pkg:b >"${TEST_log}" 2>&1 \
|| fail "Expected build to succeed"
- ls -R "${sandbox_stash}/_NoMnemonic_/"
- [[ ! -L "${sandbox_stash}/_NoMnemonic_/6/$execroot_reldir/pkg/a.txt" ]] \
+ ls -R "${sandbox_stash}/Genrule/"
+ [[ ! -L "${sandbox_stash}/Genrule/6/$execroot_reldir/pkg/a.txt" ]] \
|| fail "${sandbox_stash} should no longer have a link to a.txt"
- [[ -L "${sandbox_stash}/_NoMnemonic_/6/$execroot_reldir/pkg/b.txt" ]] \
+ [[ -L "${sandbox_stash}/Genrule/6/$execroot_reldir/pkg/b.txt" ]] \
|| fail "${sandbox_stash} should now have a link to b.txt"
bazel clean
@@ -992,7 +992,7 @@
local sandbox_stash="${output_base}/sandbox_stash"
[[ -d "${sandbox_stash}" ]] \
|| fail "${sandbox_stash} not present"
- [[ -d "${sandbox_stash}/_NoMnemonic_/3" ]] \
+ [[ -d "${sandbox_stash}/Genrule/3" ]] \
|| fail "${sandbox_stash} did not stash anything"
bazel clean --reuse_sandbox_directories
@@ -1002,7 +1002,7 @@
bazel build --experimental_sandbox_async_tree_delete_idle_threads=2 \
--reuse_sandbox_directories //pkg:a >"${TEST_log}" 2>&1 \
|| fail "Expected build to succeed"
- [[ -d "${sandbox_stash}/_NoMnemonic_/6" ]] \
+ [[ -d "${sandbox_stash}/Genrule/6" ]] \
|| fail "${sandbox_stash} did not stash anything"
bazel clean