def test_no_subscription_id(self): sub = self.create_subscription(QuerySubscription.Status.UPDATING) assert sub.subscription_id is None update_subscription_in_snuba(sub.id) sub = QuerySubscription.objects.get(id=sub.id) assert sub.status == QuerySubscription.Status.ACTIVE.value assert sub.subscription_id is not None
def test(self): subscription_id = "1/{}".format(uuid4().hex) sub = self.create_subscription(QuerySubscription.Status.UPDATING, subscription_id=subscription_id) update_subscription_in_snuba(sub.id) sub = QuerySubscription.objects.get(id=sub.id) assert sub.status == QuerySubscription.Status.ACTIVE.value assert sub.subscription_id is not None assert sub.subscription_id != subscription_id
def fix_metric_alert_group_ids(apps, schema_editor): from sentry.snuba.tasks import update_subscription_in_snuba QuerySubscription = apps.get_model("sentry", "QuerySubscription") # This table has < 10k rows, so filtering on an unindexed column will be fine. This # should return < 50 rows in Saas, and even fewer on other deploys for subscription in QuerySubscription.objects.filter(snuba_query__query__contains="issue.id"): # We want to recreate the subscription in snuba, so that the conditions are built # properly for issue ids. To do this, we just fire off the update task. try: with transaction.atomic(): subscription.status = 2 # QuerySubscription.Status.UPDATING.value subscription.save() update_subscription_in_snuba(subscription.id) except Exception: logging.exception("Failed to fix subscription")