Skip to content

Commit 6fc63ae

Browse files
authored
Merge pull request #1281 from okorach:Handle-HTTP-errors-in-threaded-search
Gracefully handle HTTP errors in threads
2 parents 4536f0c + 9b095d7 commit 6fc63ae

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

sonar/issues.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
from datetime import date, datetime, timedelta
2424
import json
2525
import re
26+
2627
from typing import Union, Optional
2728
from queue import Queue
2829
from threading import Thread
2930
import requests.utils
31+
from requests.exceptions import HTTPError
3032

3133
import sonar.logging as log
3234
import sonar.platform as pf
@@ -702,12 +704,15 @@ def __search_thread(queue: Queue) -> None:
702704
page_params = params.copy()
703705
page_params["p"] = page
704706
log.debug("Threaded issue search params = %s", str(page_params))
705-
data = json.loads(endpoint.get(api, params=page_params).text)
706-
for i in data["issues"]:
707-
i["branch"] = page_params.get("branch", None)
708-
i["pullRequest"] = page_params.get("pullRequest", None)
709-
issue_list[i["key"]] = get_object(endpoint=endpoint, key=i["key"], data=i)
710-
log.debug("Added %d issues in threaded search page %d", len(data["issues"]), page)
707+
try:
708+
data = json.loads(endpoint.get(api, params=page_params).text)
709+
for i in data["issues"]:
710+
i["branch"] = page_params.get("branch", None)
711+
i["pullRequest"] = page_params.get("pullRequest", None)
712+
issue_list[i["key"]] = get_object(endpoint=endpoint, key=i["key"], data=i)
713+
log.debug("Added %d issues in threaded search page %d", len(data["issues"]), page)
714+
except HTTPError as e:
715+
log.critical("HTTP Error while searching issues, search may be incomplete: %s", str(e))
711716
queue.task_done()
712717

713718

sonar/sqobject.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,15 @@ def __search_thread(queue: Queue) -> None:
109109
page_params = params.copy()
110110
page_params["p"] = page
111111
log.debug("Threaded search: API = %s params = %s", api, str(params))
112-
data = json.loads(endpoint.get(api, params=page_params).text)
113-
for obj in data[returned_field]:
114-
if object_class.__name__ in ("QualityProfile", "QualityGate", "Groups", "Portfolio", "Project"):
115-
objects[obj[key_field]] = object_class.load(endpoint=endpoint, data=obj)
116-
else:
117-
objects[obj[key_field]] = object_class(endpoint, obj[key_field], data=obj)
112+
try:
113+
data = json.loads(endpoint.get(api, params=page_params).text)
114+
for obj in data[returned_field]:
115+
if object_class.__name__ in ("QualityProfile", "QualityGate", "Groups", "Portfolio", "Project"):
116+
objects[obj[key_field]] = object_class.load(endpoint=endpoint, data=obj)
117+
else:
118+
objects[obj[key_field]] = object_class(endpoint, obj[key_field], data=obj)
119+
except HTTPError as e:
120+
log.critical("HTTP error while searching %s, search skipped: %s", object_class.__name__, str(e))
118121
queue.task_done()
119122

120123

0 commit comments

Comments
 (0)