fix(scanner): skip disk inventory in scan spans (#5933)

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-08-11 09:01:51 +08:00
committed by GitHub
parent 3747d19ce5
commit 727a10e111
2 changed files with 29 additions and 1 deletions
+1 -1
View File
@@ -3881,7 +3881,7 @@ impl ScannerIODisk for Disk {
Ok(size_summary)
}
#[tracing::instrument(skip(self, budget, updates, cache))]
#[tracing::instrument(skip(self, budget, updates, cache, set_disks))]
async fn nsscanner_disk(
self: Arc<Self>,
ctx: CancellationToken,
+28
View File
@@ -842,6 +842,34 @@ for file in "${disk_logging_files[@]}"; do
fi
done
# `set_disks` expands every Disk through Debug, including raw format bytes and
# the full per-operation metrics ring. Keep it out of the INFO scanner span.
scanner_disk_skip_pattern='#\[(tracing::)?instrument\([^]]*skip\([^)]*\bset_disks\b[^)]*\)[^]]*\)\][[:space:]]*async fn nsscanner_disk\b'
if ! rg -U "$scanner_disk_skip_pattern" crates/scanner/src/scanner_io.rs >/dev/null; then
echo "❌ logging guardrail violation: nsscanner_disk must skip set_disks in its tracing instrumentation" >&2
exit 1
fi
for fixture in \
$'#[tracing::instrument(skip(self, budget, updates, cache, set_disks))]\nasync fn nsscanner_disk('; do
if ! printf '%s\n' "$fixture" | rg -U "$scanner_disk_skip_pattern" >/dev/null; then
echo "❌ logging guardrail self-test failed: safe nsscanner_disk span was rejected" >&2
echo "$fixture" >&2
exit 1
fi
done
for fixture in \
$'#[tracing::instrument(skip(self, budget, updates, cache))]\nasync fn nsscanner_disk(' \
$'#[tracing::instrument(skip(self, budget, updates, cache), fields(set_disks = set_disks.len()))]\nasync fn nsscanner_disk(' \
$'#[tracing::instrument(skip(self, budget, updates, cache, set_disks_count))]\nasync fn nsscanner_disk('; do
if printf '%s\n' "$fixture" | rg -U "$scanner_disk_skip_pattern" >/dev/null; then
echo "❌ logging guardrail self-test failed: unsafe nsscanner_disk span was accepted" >&2
echo "$fixture" >&2
exit 1
fi
done
# `forbidden_patterns` above only retires log lines that already shipped, so a
# newly written sentence-style log passes every check in this script — which is
# how one reaches review in the first place (PR #5822 added