Beispiel #1
0
def truncate_denormalizations(group):
    tagstore.delete_all_group_tag_keys(group.project_id, group.id)
    tagstore.delete_all_group_tag_values(group.project_id, group.id)

    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],
    )

    features.delete(group)
Beispiel #2
0
    def delete_instance(self, instance):
        from sentry.similarity import features

        if not self.skip_models or features not in self.skip_models:
            features.delete(instance)

        return super(GroupDeletionTask, self).delete_instance(instance)
Beispiel #3
0
    def delete_instance(self, instance):
        from sentry.similarity import features

        if not self.skip_models or features not in self.skip_models:
            features.delete(instance)

        return super(GroupDeletionTask, self).delete_instance(instance)
Beispiel #4
0
def truncate_denormalizations(group):
    tagstore.delete_all_group_tag_keys(group.project_id, group.id)
    tagstore.delete_all_group_tag_values(group.project_id, group.id)

    GroupRelease.objects.filter(
        group_id=group.id,
    ).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]
    )

    features.delete(group)
Beispiel #5
0
def truncate_denormalizations(group):
    GroupTagKey.objects.filter(
        group_id=group.id,
    ).delete()

    GroupTagValue.objects.filter(
        group_id=group.id,
    ).delete()

    GroupRelease.objects.filter(
        group_id=group.id,
    ).delete()

    tsdb.delete([
        tsdb.models.group,
    ], [group.id])

    tsdb.delete_distinct_counts([
        tsdb.models.users_affected_by_group,
    ], [group.id])

    tsdb.delete_frequencies(
        [
            tsdb.models.frequent_releases_by_group,
            tsdb.models.frequent_environments_by_group,
        ], [group.id]
    )

    features.delete(group)
Beispiel #6
0
def delete_group(object_id, transaction_id=None, continuous=True, **kwargs):
    from sentry.models import (
        EventMapping, Group, GroupAssignee, GroupBookmark, GroupCommitResolution,
        GroupHash, GroupMeta, GroupRelease, GroupResolution, GroupRuleStatus,
        GroupSnooze, GroupSubscription, GroupStatus, GroupTagKey, GroupTagValue,
        GroupEmailThread, GroupRedirect, UserReport
    )

    try:
        group = Group.objects.get(id=object_id)
    except Group.DoesNotExist:
        return

    if group.status != GroupStatus.DELETION_IN_PROGRESS:
        group.update(status=GroupStatus.DELETION_IN_PROGRESS)

    bulk_model_list = (
        # prioritize GroupHash
        GroupHash, GroupAssignee, GroupCommitResolution, GroupBookmark,
        GroupMeta, GroupRelease, GroupResolution, GroupRuleStatus, GroupSnooze,
        GroupTagValue, GroupTagKey, EventMapping, GroupEmailThread, GroupRedirect,
        GroupSubscription, UserReport,
    )
    for model in bulk_model_list:
        has_more = bulk_delete_objects(model, group_id=object_id, logger=logger)
        if has_more:
            if continuous:
                delete_group.apply_async(
                    kwargs={'object_id': object_id, 'transaction_id': transaction_id},
                    countdown=15,
                )
            return

    has_more = delete_events(relation={'group_id': object_id}, logger=logger)
    if has_more:
        if continuous:
            delete_group.apply_async(
                kwargs={'object_id': object_id, 'transaction_id': transaction_id},
            )
        return

    features.delete(group)
    g_id = group.id
    group.delete()
    logger.info('object.delete.executed', extra={
        'object_id': g_id,
        'transaction_id': transaction_id,
        'model': Group.__name__,
    })
Beispiel #7
0
def delete_group(object_id, transaction_id=None, continuous=True, **kwargs):
    from sentry.models import (
        EventMapping, Group, GroupAssignee, GroupBookmark, GroupCommitResolution,
        GroupHash, GroupMeta, GroupRelease, GroupResolution, GroupRuleStatus,
        GroupSnooze, GroupSubscription, GroupStatus, GroupTagKey, GroupTagValue,
        GroupEmailThread, GroupRedirect, UserReport
    )

    try:
        group = Group.objects.get(id=object_id)
    except Group.DoesNotExist:
        return

    if group.status != GroupStatus.DELETION_IN_PROGRESS:
        group.update(status=GroupStatus.DELETION_IN_PROGRESS)

    bulk_model_list = (
        # prioritize GroupHash
        GroupHash, GroupAssignee, GroupCommitResolution, GroupBookmark,
        GroupMeta, GroupRelease, GroupResolution, GroupRuleStatus, GroupSnooze,
        GroupTagValue, GroupTagKey, EventMapping, GroupEmailThread, GroupRedirect,
        GroupSubscription, UserReport,
    )
    for model in bulk_model_list:
        has_more = bulk_delete_objects(model, group_id=object_id, logger=logger)
        if has_more:
            if continuous:
                delete_group.apply_async(
                    kwargs={'object_id': object_id, 'transaction_id': transaction_id},
                    countdown=15,
                )
            return

    has_more = delete_events(relation={'group_id': object_id}, logger=logger)
    if has_more:
        if continuous:
            delete_group.apply_async(
                kwargs={'object_id': object_id, 'transaction_id': transaction_id},
            )
        return

    features.delete(group)
    g_id = group.id
    group.delete()
    logger.info('object.delete.executed', extra={
        'object_id': g_id,
        'transaction_id': transaction_id,
        'model': Group.__name__,
    })
Beispiel #8
0
def truncate_denormalizations(group):
    tagstore.delete_all_group_tag_keys(group.project_id, group.id)
    tagstore.delete_all_group_tag_values(group.project_id, group.id)

    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]
    )

    features.delete(group)
Beispiel #9
0
def truncate_denormalizations(group):
    tagstore.delete_all_group_tag_keys(group.id)
    tagstore.delete_all_group_tag_values(group.id)

    GroupRelease.objects.filter(
        group_id=group.id,
    ).delete()

    tsdb.delete([
        tsdb.models.group,
    ], [group.id])

    tsdb.delete_distinct_counts([
        tsdb.models.users_affected_by_group,
    ], [group.id])

    tsdb.delete_frequencies(
        [
            tsdb.models.frequent_releases_by_group,
            tsdb.models.frequent_environments_by_group,
        ], [group.id]
    )

    features.delete(group)
Beispiel #10
0
    def delete_instance(self, instance):
        from sentry.similarity import features

        features.delete(instance)

        return super(GroupDeletionTask, self).delete_instance(instance)
Beispiel #11
0
    def delete_instance(self, instance):
        from sentry.similarity import features

        features.delete(instance)

        return super(GroupDeletionTask, self).delete_instance(instance)