Repository navigation
Conversation
The GraphQL collector already skips GitHub's "Could not resolve to an Issue" error so that an issue deleted upstream does not fail the child collection. Linear reports the same case as "Entity not found: Issue", which failed the Linear Comments and Issue History collectors. Because the collector state is only saved after a successful run, the failing window never moved forward: the deleted issue stayed in _tool_linear_issues and failed every following run of that team. Treat Linear's message the same way as GitHub's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skipping "Entity not found: Issue" was not enough: the deleted issue
comes back as an empty `issue` object without page info, and the
GraphQL collector fails on nil page info ("handle failed in graphql
collector"). Treat a missing page info as the last page in the Linear
comment and issue history collectors.
The shared collector keeps failing on nil page info, because GitHub's
collectors batch several issues per query and rely on that check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
The Linear
Collect Commentssubtask fails when an issue that DevLake already stored has been deleted in Linear:The GraphQL collector already skips this case for GitHub, whose message is
Could not resolve to an Issue. Linear's message for the same case isEntity not found: Issue, so that error was not skipped.Collect Issue Historyhas the same problem.The failure also repeats. The collector state is saved only after a successful run, so the next run uses the same time window, queries the same deleted issue and fails again. On our instance one team failed every night for more than two weeks, and every subtask after
Collect Commentswas skipped for that team.This PR makes
isIgnorableGraphqlQueryErrormatch Linear's message too. A deleted issue then produces the existing warning, and collection continues.Entity not foundfor any type other thanIssuestill fails.The fix has two parts:
isIgnorableGraphqlQueryErroralso matches Linear'sEntity not found: Issue.issueobject without page info, and the collector fails on nil page info (handle failed in graphql collector). The Linear comment and issue history collectors now treat missing page info as the last page. The shared collector keeps its nil check, because GitHub's collectors batch several issues per query and rely on it.Does this close any open issues?
No issue filed.
Screenshots
Not applicable (collector-only change).
Tests
helpers/pluginhelper/api/graphql_collector_test.go: added cases forEntity not found: Issue(ignored) andEntity not found: Team(not ignored). The new assertion fails before the change and passes after it.plugins/linear/tasks/page_info_test.go: a deleted issue ends pagination for both collectors, and Linear's own page info is kept. Both new tests fail before the change and pass after it.go test ./helpers/pluginhelper/api/ ./plugins/linear/tasks/ ./plugins/linear/impl/passes.🤖 Generated with Claude Code