Browse Source

feat(CapMan): GroupRelease `tenant_ids` for `tsdb-modelid:407` (#45998)

### Overview
- `get_frequency_series()` with tsdb 407 still sending queries without
`tenant_ids`
- More context #44788
Rahul Kumar Saini 2 years ago
parent
commit
72522991e0

+ 12 - 1
src/sentry/api/serializers/models/grouprelease.py

@@ -5,7 +5,7 @@ from django.utils import timezone
 
 from sentry import tsdb
 from sentry.api.serializers import Serializer, register, serialize
-from sentry.models import GroupRelease, Release
+from sentry.models import GroupRelease, Project, Release
 
 StatsPeriod = namedtuple("StatsPeriod", ("segments", "interval"))
 
@@ -43,6 +43,16 @@ class GroupReleaseWithStatsSerializer(GroupReleaseSerializer):
     def get_attrs(self, item_list, user):
         attrs = super().get_attrs(item_list, user)
 
+        tenant_ids = (
+            {
+                "organization_id": Project.objects.get_from_cache(
+                    id=item_list[0].project_id
+                ).organization_id
+            }
+            if item_list
+            else None
+        )
+
         items = {}
         for item in item_list:
             items.setdefault(item.group_id, []).append(item.id)
@@ -59,6 +69,7 @@ class GroupReleaseWithStatsSerializer(GroupReleaseSerializer):
                     start=since,
                     end=until,
                     rollup=int(interval.total_seconds()),
+                    tenant_ids=tenant_ids,
                 )
             except NotImplementedError:
                 # TODO(dcramer): probably should log this, but not worth

+ 0 - 1
src/sentry/models/grouprelease.py

@@ -19,7 +19,6 @@ from sentry.utils.hashlib import md5_text
 class GroupRelease(Model):
     __include_in_export__ = False
 
-    # TODO: Should be BoundedBigIntegerField
     project_id = BoundedBigIntegerField(db_index=True)
     group_id = BoundedBigIntegerField()
     # TODO: Should be BoundedBigIntegerField

+ 3 - 1
src/sentry/tsdb/base.py

@@ -537,7 +537,9 @@ class BaseTSDB(Service):
         """
         raise NotImplementedError
 
-    def get_frequency_series(self, model, items, start, end=None, rollup=None, environment_id=None):
+    def get_frequency_series(
+        self, model, items, start, end=None, rollup=None, environment_id=None, tenant_ids=None
+    ):
         """
         Retrieve the frequency of known items in a table over time.
 

+ 4 - 1
src/sentry/tsdb/snuba.py

@@ -868,7 +868,9 @@ class SnubaTSDB(BaseTSDB):
             for k in result.keys()
         }
 
-    def get_frequency_series(self, model, items, start, end=None, rollup=None, environment_id=None):
+    def get_frequency_series(
+        self, model, items, start, end=None, rollup=None, environment_id=None, tenant_ids=None
+    ):
         result = self.get_data(
             model,
             items,
@@ -878,6 +880,7 @@ class SnubaTSDB(BaseTSDB):
             [environment_id] if environment_id is not None else None,
             aggregation="count()",
             group_on_time=True,
+            tenant_ids=tenant_ids,
         )
         # convert
         #    {group:{timestamp:{agg:count}}}