Skip to content

Commit 352f608

Browse files
committed
Fix regression on search issues
1 parent 5e58495 commit 352f608

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

sonar/issues.py

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,9 @@ def __search_all_by_severities(endpoint: pf.Platform, params: ApiParams) -> dict
597597
return issue_list
598598

599599

600-
def __search_all_by_date(endpoint: pf.Platform, params: ApiParams, date_start: date = None, date_stop: date = None) -> dict[str, Issue]:
600+
def __search_all_by_date(
601+
endpoint: pf.Platform, params: ApiParams, date_start: Optional[date] = None, date_stop: Optional[date] = None
602+
) -> dict[str, Issue]:
601603
"""Searches issues splitting by date windows to avoid exceeding the 10K limit"""
602604
new_params = params.copy()
603605
if date_start is None:
@@ -608,11 +610,15 @@ def __search_all_by_date(endpoint: pf.Platform, params: ApiParams, date_start: d
608610
date_stop = get_newest_issue(endpoint=endpoint, params=new_params).replace(hour=0, minute=0, second=0, microsecond=0)
609611
if isinstance(date_stop, datetime):
610612
date_stop = date_stop.date()
611-
log.info("Splitting search by date between [%s - %s]", util.date_to_string(date_start, False), util.date_to_string(date_stop, False))
612-
issue_list = {}
613-
new_params.update(
614-
{"createdAfter": util.date_to_string(date_start, with_time=False), "createdBefore": util.date_to_string(date_stop, with_time=False)}
613+
log.info(
614+
"Project '%s' Splitting search by date between [%s - %s]",
615+
params["project"],
616+
util.date_to_string(date_start, False),
617+
util.date_to_string(date_stop, False),
615618
)
619+
issue_list = {}
620+
new_params["createdAfter"] = util.date_to_string(date_start, with_time=False)
621+
new_params["createdBefore"] = util.date_to_string(date_stop, with_time=False)
616622
try:
617623
issue_list = search(endpoint=endpoint, params=new_params)
618624
except TooManyIssuesError as e:
@@ -631,8 +637,8 @@ def __search_all_by_date(endpoint: pf.Platform, params: ApiParams, date_start: d
631637
issue_list.update(__search_all_by_date(endpoint=endpoint, params=new_params, date_start=date_middle, date_stop=date_stop))
632638
if date_start is not None and date_stop is not None:
633639
log.debug(
634-
"Project %s has %d issues between %s and %s",
635-
new_params[component_filter(endpoint)],
640+
"Project '%s' has %d issues between %s and %s",
641+
params["project"],
636642
len(issue_list),
637643
util.date_to_string(date_start, False),
638644
util.date_to_string(date_stop, False),
@@ -643,7 +649,7 @@ def __search_all_by_date(endpoint: pf.Platform, params: ApiParams, date_start: d
643649
def __search_all_by_project(endpoint: pf.Platform, project_key: str, params: ApiParams = None) -> dict[str, Issue]:
644650
"""Search issues by project"""
645651
new_params = {} if params is None else params.copy()
646-
new_params[component_filter(endpoint)] = project_key
652+
new_params["project"] = project_key
647653
issue_list = {}
648654
log.debug("Searching for issues of project '%s'", project_key)
649655
try:
@@ -693,17 +699,22 @@ def search_all(endpoint: pf.Platform, params: ApiParams = None) -> dict[str, Iss
693699
:rtype: dict{<key>: <Issue>}
694700
"""
695701
issue_list = {}
702+
new_params = params.copy()
703+
new_params["ps"] = Issue.MAX_PAGE_SIZE
696704
try:
697-
issue_list = search(endpoint=endpoint, params=params)
705+
issue_list = search(endpoint=endpoint, params=new_params.copy())
698706
except TooManyIssuesError:
699707
log.info(_TOO_MANY_ISSUES_MSG)
700708
comp_filter = component_filter(endpoint)
701-
if params and comp_filter in params:
709+
if params and "project" in params:
710+
key_list = util.csv_to_list(params["project"])
711+
elif params and comp_filter in params:
702712
key_list = util.csv_to_list(params[comp_filter])
703713
else:
704714
key_list = projects.search(endpoint).keys()
705715
for k in key_list:
706-
issue_list.update(__search_all_by_project(endpoint=endpoint, project_key=k, params=params))
716+
issue_list.update(__search_all_by_project(endpoint=endpoint, project_key=k, params=new_params))
717+
log.debug("SEARCH ALL %s returns %d issues", str(params), len(issue_list))
707718
return issue_list
708719

709720

@@ -750,7 +761,7 @@ def search(endpoint: pf.Platform, params: ApiParams = None, raise_error: bool =
750761
:rtype: dict{<key>: <Issue>}
751762
:raises: TooManyIssuesError if more than 10'000 issues found
752763
"""
753-
filters = pre_search_filters(endpoint=endpoint, params=params)
764+
filters = pre_search_filters(endpoint=endpoint, params=params.copy())
754765
if "ps" not in filters:
755766
filters["ps"] = Issue.MAX_PAGE_SIZE
756767

@@ -774,8 +785,9 @@ def search(endpoint: pf.Platform, params: ApiParams = None, raise_error: bool =
774785
if nbr_pages == 1:
775786
return issue_list
776787
q = Queue(maxsize=0)
788+
prepared_params = pre_search_filters(endpoint=endpoint, params=params)
777789
for page in range(2, nbr_pages + 1):
778-
q.put((endpoint, Issue.SEARCH_API, issue_list, filters, page))
790+
q.put((endpoint, Issue.SEARCH_API, issue_list, prepared_params, page))
779791
for i in range(threads):
780792
log.debug("Starting issue search thread %d", i)
781793
worker = Thread(target=__search_thread, args=[q])

0 commit comments

Comments
 (0)