def delete_instance(self, instance): from sentry import similarity if not self.skip_models or similarity not in self.skip_models: similarity.delete(None, instance) return super(GroupDeletionTask, self).delete_instance(instance)
def truncate_denormalizations(project, group): GroupRelease.objects.filter(group_id=group.id).delete() # XXX: This can cause a race condition with the ``FirstSeenEventCondition`` # where notifications can be erroneously sent if they occur in this group # before the reprocessing of the denormalizated data completes, since a new # ``GroupEnvironment`` will be created. for instance in GroupEnvironment.objects.filter(group_id=group.id): instance.delete() environment_ids = list( Environment.objects.filter(projects=group.project).values_list( "id", flat=True)) tsdb.delete([tsdb.models.group], [group.id], environment_ids=environment_ids) tsdb.delete_distinct_counts([tsdb.models.users_affected_by_group], [group.id], environment_ids=environment_ids) tsdb.delete_frequencies( [ tsdb.models.frequent_releases_by_group, tsdb.models.frequent_environments_by_group ], [group.id], ) similarity.delete(project, group)
def finish_reprocessing(project_id, group_id, new_group_id): from sentry.models import Group, GroupRedirect, Activity with transaction.atomic(): group = Group.objects.get(id=group_id) new_group = Group.objects.get(id=new_group_id) # Any sort of success message will be shown at the *new* group ID's URL GroupRedirect.objects.create( organization_id=new_group.project.organization_id, group_id=new_group.id, previous_group_id=group_id, ) # While we migrated all associated models at the beginning of # reprocessing, there is still the "reprocessing" activity that we need # to transfer manually. Activity.objects.filter(group_id=group_id).update( group_id=new_group_id) # All the associated models (groupassignee and eventattachments) should # have moved to a successor group that may be deleted independently. group.delete() # Need to delay this until we have enqueued all events. eventstream.exclude_groups(project_id, [group_id]) from sentry import similarity similarity.delete(None, group)
def finish_reprocessing(project_id, group_id): from sentry.models import Activity, Group, GroupRedirect with transaction.atomic(): group = Group.objects.get(id=group_id) # While we migrated all associated models at the beginning of # reprocessing, there is still the "reprocessing" activity that we need # to transfer manually. activity = Activity.objects.get(group_id=group_id) new_group_id = activity.group_id = activity.data["newGroupId"] activity.save() new_group = Group.objects.get(id=new_group_id) # Any sort of success message will be shown at the *new* group ID's URL GroupRedirect.objects.create( organization_id=new_group.project.organization_id, group_id=new_group_id, previous_group_id=group_id, ) # All the associated models (groupassignee and eventattachments) should # have moved to a successor group that may be deleted independently. group.delete() from sentry import similarity similarity.delete(None, group)
def delete_old_group(project_id, group_id): from sentry import similarity from sentry.models.group import Group group = Group.objects.get_from_cache(id=group_id) similarity.delete(None, group) # All the associated models (groupassignee and eventattachments) should # have moved to a successor group that may be deleted independently. group.delete()
def finish_reprocessing(project_id, group_id): from sentry.models import Activity, Group, GroupRedirect with transaction.atomic(): group = Group.objects.get(id=group_id) # While we migrated all associated models at the beginning of # reprocessing, there is still the "reprocessing" activity that we need # to transfer manually. activity = Activity.objects.get(group_id=group_id) new_group_id = activity.group_id = activity.data["newGroupId"] activity.save() new_group = Group.objects.get(id=new_group_id) # Any sort of success message will be shown at the *new* group ID's URL GroupRedirect.objects.create( organization_id=new_group.project.organization_id, group_id=new_group_id, previous_group_id=group_id, ) # All the associated models (groupassignee and eventattachments) should # have moved to a successor group that may be deleted independently. group.delete() # Tombstone unwanted events that should be dropped after new group # is generated after reprocessing buffered_delete_old_primary_hash( project_id=project_id, group_id=group_id, force_flush_batch=True, ) eventstream.exclude_groups(project_id, [group_id]) from sentry import similarity similarity.delete(None, group)