Skip to content

Commit 8555789

Browse files
benjaminpcopybara-github
authored andcommitted
Fix the classic query package-loading cutoff optimization with external workspaces.
A package's path fragment is not unambiguous when external workspaces are involved. Fixes #12497. Closes #12595. PiperOrigin-RevId: 346048937
1 parent 81e570c commit 8555789

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ private void getTargetsMatchingPatternImpl(String pattern, Callback<Target> call
184184
}
185185
}
186186

187-
Set<PathFragment> packages = CompactHashSet.create();
187+
Set<PackageIdentifier> packages = CompactHashSet.create();
188188
for (Target target : targets) {
189-
packages.add(target.getLabel().getPackageFragment());
189+
packages.add(target.getLabel().getPackageIdentifier());
190190
}
191191

192192
for (Target target : targets) {
@@ -205,7 +205,7 @@ private void getTargetsMatchingPatternImpl(String pattern, Callback<Target> call
205205
} else if (target instanceof Rule) {
206206
Rule rule = (Rule) target;
207207
for (Label label : rule.getLabels(dependencyFilter)) {
208-
if (!packages.contains(label.getPackageFragment())) {
208+
if (!packages.contains(label.getPackageIdentifier())) {
209209
continue; // don't cause additional package loading
210210
}
211211
try {

src/test/shell/integration/bazel_query_test.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,4 +853,20 @@ function test_query_failure_exit_code_behavior() {
853853
assert_equals 7 "$exit_code"
854854
}
855855

856+
function test_unnecessary_external_workspaces_not_loaded() {
857+
cat > WORKSPACE <<'EOF'
858+
local_repository(
859+
name = "notthere",
860+
path = "/nope",
861+
)
862+
EOF
863+
cat > BUILD <<'EOF'
864+
filegroup(
865+
name = "something",
866+
srcs = ["@notthere"],
867+
)
868+
EOF
869+
bazel query '//:*' || fail "Expected success"
870+
}
871+
856872
run_suite "${PRODUCT_NAME} query tests"

0 commit comments

Comments
 (0)