From 2a4326a25693037edce6dcce27cc90d22fe93d90 Mon Sep 17 00:00:00 2001 From: Lena <241371603+zelenenka@users.noreply.github.com> Date: Tue, 6 Oct 2026 09:03:03 +0000 Subject: [PATCH] Duplicate Bot tracking: handle issues deleted mid-run (#65222) Release Notes: - N/A --- ...ithub-track-duplicate-bot-effectiveness.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/script/github-track-duplicate-bot-effectiveness.py b/script/github-track-duplicate-bot-effectiveness.py index 569ccb2cffe..4c9f3de93f4 100644 --- a/script/github-track-duplicate-bot-effectiveness.py +++ b/script/github-track-duplicate-bot-effectiveness.py @@ -92,6 +92,16 @@ def is_staff_member(username): raise +def issue_exists(issue_number): + try: + github_rest_api("GET", f"repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue_number}") + except requests.HTTPError as error: + if error.response.status_code in (404, 410): + return False + raise + return True + + def fetch_issue(issue_number): data = github_rest_api( "GET", f"repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue_number}" @@ -511,6 +521,13 @@ if __name__ == "__main__": PROJECT_NUMBER = DEFAULT_PROJECT_NUMBER if args.command == "classify-closed": - classify_closed(args.issue_number, args.closer_login, args.state_reason) + # The issue can be deleted or transferred mid-run, which surfaces as a + # different error depending on which REST or GraphQL call hits it first. + try: + classify_closed(args.issue_number, args.closer_login, args.state_reason) + except Exception: + if issue_exists(args.issue_number): + raise + print(f"Skipping: issue #{args.issue_number} no longer exists (deleted or transferred)") elif args.command == "classify-open": classify_open()