Browse Source

fix: keys can be a set (#10545)

Alex Hofsteede 6 years ago
parent
commit
84ecb669a5
2 changed files with 15 additions and 2 deletions
  1. 2 2
      src/sentry/utils/snuba.py
  2. 13 0
      tests/snuba/test_util.py

+ 2 - 2
src/sentry/utils/snuba.py

@@ -254,7 +254,7 @@ def raw_query(start, end, groupby=None, conditions=None, filter_keys=None,
 
     if 'project_id' in filter_keys:
         # If we are given a set of project ids, use those directly.
-        project_ids = filter_keys['project_id']
+        project_ids = list(set(filter_keys['project_id']))
     elif filter_keys:
         # Otherwise infer the project_ids from any related models
         with timer('get_related_project_ids'):
@@ -265,7 +265,7 @@ def raw_query(start, end, groupby=None, conditions=None, filter_keys=None,
 
     for col, keys in six.iteritems(forward(filter_keys.copy())):
         if keys:
-            if len(keys) == 1 and keys[0] is None:
+            if len(keys) == 1 and None in keys:
                 conditions.append((col, 'IS NULL', None))
             else:
                 conditions.append((col, 'IN', keys))

+ 13 - 0
tests/snuba/test_util.py

@@ -47,6 +47,19 @@ class SnubaUtilTest(TestCase):
         ]
         assert set(snuba.all_referenced_columns(conditions)) == set(['a', 'b', 'c', 'd'])
 
+    def test_filter_keys_set(self):
+        snuba.raw_query(
+            start=datetime.now(),
+            end=datetime.now(),
+            filter_keys={
+                'project_id': set([1]),
+                'logger': set(['asdf']),
+            },
+            aggregations=[
+                ['count()', '', 'count'],
+            ],
+        )
+
     def test_shrink_timeframe(self):
         now = datetime.now()
         year_ago = now - timedelta(days=365)