Repository navigation
Skip workspace diagnostic reports that fail to convert - #1914
Merged
Dirk Bäumer (dbaeumer) merged 2 commits intoOct 26, 2026
Merged
Dirk Bäumer (dbaeumer) merged 2 commits into
Dirk Bäumer (dbaeumer) merged 2 commits into
Conversation
The final workspace/diagnostic response converted its reports without per-item error handling, unlike the partial-result handler. A single report that failed to convert (e.g. a diagnostic with an empty message, which VS Code rejects with "message must be set") rejected the whole pull, so the valid reports were dropped. Since the same payload fails on every pull, workspaceErrorCounter passed its limit after 6 attempts and workspace pulls stopped for the session. Log and skip the failing report, as the partial-result path does. The progress handler leak test now expects the pull to resolve, and a new test covers keeping the valid reports.
There was a problem hiding this comment.
🟡 Changes recommended
The new error call enables repeated user notifications during background polling instead of only logging conversion failures.
1 open issue
What changed in this PR
This PR isolates conversion failures in final workspace diagnostic responses so one malformed report no longer rejects the entire pull or eventually stops workspace polling.
Changes:
- Catch and log conversion failures per report while preserving valid reports.
- Update progress-handler cleanup tests to expect successful pulls.
- Add regression coverage for mixed valid and malformed reports.
| File | Description |
|---|---|
client/src/common/diagnostic.ts |
Skip individual reports that fail conversion in final responses. |
client-node-tests/src/integration.test.ts |
Update cleanup expectations and test malformed-report isolation. |
Review effort: Balanced
Dirk Bäumer (dbaeumer)
enabled auto-merge
October 26, 2026 18:16
Dirk Bäumer (dbaeumer)
approved these changes
Oct 26, 2026
Dmitriy Vasyura (dmitrivMS)
approved these changes
Oct 26, 2026
Bhavya U (bhavyaus)
approved these changes
Oct 26, 2026
Trivikram Kamat (trivikr)
deleted the
client-diagnostic-convert-report-reject
branch
October 26, 2026 22:05
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.

If one report in the final
workspace/diagnosticresponse failed to convert, the whole pull was rejected, and after 6 such failures workspace pulls stopped for the session. This logs and skips the failing report instead, the same way the partial-result handler already does.DiagnosticRequestor: the final-result loop inprovideWorkspaceDiagnosticsnow catches a failedconvertReportcall, logsConverting workspace diagnostics failed., and keeps the other reports. Before, a single bad item (e.g. a diagnostic with an emptymessage, which VS Code rejects withmessage must be set) dropped every report and incrementedworkspaceErrorCounter.finallypath. It now expects the pull to resolve, and the unusedexpectRejectionhelper parameter is gone.New test: a valid report next to one with an empty message delivers the valid report and logs the failure once.