roachvet: add swallowed error detection analyzers#162155
Draft
ajstorm wants to merge 1 commit intocockroachdb:masterfrom
Draft
roachvet: add swallowed error detection analyzers#162155ajstorm wants to merge 1 commit intocockroachdb:masterfrom
ajstorm wants to merge 1 commit intocockroachdb:masterfrom
Conversation
|
Your pull request contains more than 1000 changes. It is strongly encouraged to split big PRs into smaller chunks. 🦉 Hoot! I am a Blathers, a bot for CockroachDB. My owner is dev-inf. |
Member
Add new lint passes for detecting swallowed errors: - defererr: detects errors ignored in defer statements - iteratorerr: detects unchecked iterator errors - errdelegate: detects errors not properly delegated - logerr: detects errors logged but not returned - txnerr: detects transaction error handling issues Epic: None Release Notes: None Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
c49dd14 to
7e1bbaf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds 5 new static analysis passes to roachvet for detecting swallowed errors that could cause silent data loss or corruption:
Err()methods that don't delegate to embedded typesCurrent Findings
Running these analyzers on the codebase finds 10 issues (3 iteratorerr, 7 defererr).
Click to expand full findings
iteratorerr (3 issues) - Likely Real Bugs
These are cases where iterator loop errors are not checked after the loop exits:
pkg/server/index_usage_stats.gonilinstead oferrafter looppkg/server/index_usage_stats.gonilinstead oferrafter looppkg/sql/scheduledlogging/captured_index_usage_stats.gonilinstead oferrafter loopdefererr (7 issues) - Mostly Intentional Patterns
These are cases where errors in defer blocks are logged but not propagated:
pkg/backup/backup_processor.goFinish()succeedspkg/ccl/cmdccl/clusterrepl/main.gopkg/ccl/sqlproxyccl/conn_migration.goClose()fallbackpkg/cmd/dev/build.gopkg/cmd/dev/build.gopkg/cmd/roachprod-centralized/.../migrator.gopkg/roachprod/vm/gce/dns.goTest plan
testdata/directories🤖 Generated with Claude Code
Release note: none