Skip to content

Commit 5285ab0

Browse files
authored
fix(event-search): Ensure that project and issue are collections (#13574)
`filter_keys` should always be a collection https://github.com/getsentry/sentry/blob/master/src/sentry/utils/snuba.py#L535
1 parent 8ab672f commit 5285ab0

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/sentry/api/event_search.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import absolute_import
22

33
import re
4-
from collections import namedtuple
4+
from collections import namedtuple, defaultdict
55
from datetime import datetime
66

77
import six
@@ -616,7 +616,7 @@ def get_snuba_query_args(query=None, params=None):
616616

617617
kwargs = {
618618
'conditions': [],
619-
'filter_keys': {},
619+
'filter_keys': defaultdict(list),
620620
}
621621

622622
for term in parsed_terms:
@@ -626,7 +626,10 @@ def get_snuba_query_args(query=None, params=None):
626626
if snuba_name in ('start', 'end'):
627627
kwargs[snuba_name] = term.value.value
628628
elif snuba_name in ('project_id', 'issue'):
629-
kwargs['filter_keys'][snuba_name] = term.value.value
629+
value = term.value.value
630+
if isinstance(value, int):
631+
value = [value]
632+
kwargs['filter_keys'][snuba_name].extend(value)
630633
else:
631634
converted_filter = convert_search_filter_to_snuba_query(term)
632635
kwargs['conditions'].append(converted_filter)

tests/sentry/api/test_event_search.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,30 @@ def test_boolean_term_simple(self):
11241124
'has_boolean_terms': True,
11251125
}
11261126

1127+
def test_issue_filter(self):
1128+
assert get_snuba_query_args('issue.id:1') == {
1129+
'conditions': [],
1130+
'filter_keys': {
1131+
'issue': [1],
1132+
},
1133+
}
1134+
1135+
assert get_snuba_query_args('issue.id:1 issue.id:2 issue.id:3') == {
1136+
'conditions': [],
1137+
'filter_keys': {
1138+
'issue': [1, 2, 3],
1139+
},
1140+
}
1141+
1142+
assert get_snuba_query_args('issue.id:1 user.email:foo@example.com') == {
1143+
'conditions': [
1144+
['email', '=', 'foo@example.com']
1145+
],
1146+
'filter_keys': {
1147+
'issue': [1],
1148+
},
1149+
}
1150+
11271151

11281152
class ConvertEndpointParamsTests(TestCase):
11291153
def test_simple(self):

0 commit comments

Comments
 (0)