def _rehash_group_events(group, limit=100): from sentry.event_manager import (EventManager, get_hashes_from_fingerprint, generate_culprit, md5_from_hash) from sentry.models import Event, Group environment_cache = {} project = group.project event_list = list(Event.objects.filter(group_id=group.id)[:limit]) Event.objects.bind_nodes(event_list, 'data') for event in event_list: fingerprint = event.data.get('fingerprint', ['{{ default }}']) if fingerprint and not isinstance(fingerprint, (list, tuple)): fingerprint = [fingerprint] elif not fingerprint: fingerprint = ['{{ default }}'] manager = EventManager({}) group_kwargs = { 'message': event.message, 'platform': event.platform, 'culprit': generate_culprit(event.data), 'logger': event.get_tag('logger') or group.logger, 'level': group.level, 'last_seen': event.datetime, 'first_seen': event.datetime, 'data': group.data, } # XXX(dcramer): doesnt support checksums as they're not stored hashes = map(md5_from_hash, get_hashes_from_fingerprint(event, fingerprint)) for hash in hashes: new_group, _, _, _ = manager._save_aggregate(event=event, hashes=hashes, release=None, **group_kwargs) event.update(group_id=new_group.id) if event.data.get('tags'): Group.objects.add_tags( new_group, _get_event_environment(event, project, environment_cache), event.data['tags']) return bool(event_list)
def _rehash_group_events(group, limit=100): from sentry.event_manager import ( EventManager, get_hashes_from_fingerprint, generate_culprit, md5_from_hash ) from sentry.models import Event, Group environment_cache = {} project = group.project event_list = list(Event.objects.filter(group_id=group.id)[:limit]) Event.objects.bind_nodes(event_list, 'data') for event in event_list: fingerprint = event.data.get('fingerprint', ['{{ default }}']) if fingerprint and not isinstance(fingerprint, (list, tuple)): fingerprint = [fingerprint] elif not fingerprint: fingerprint = ['{{ default }}'] manager = EventManager({}) group_kwargs = { 'message': event.message, 'platform': event.platform, 'culprit': generate_culprit(event.data), 'logger': event.get_tag('logger') or group.logger, 'level': group.level, 'last_seen': event.datetime, 'first_seen': event.datetime, 'data': group.data, } # XXX(dcramer): doesnt support checksums as they're not stored hashes = map(md5_from_hash, get_hashes_from_fingerprint(event, fingerprint)) for hash in hashes: new_group, _, _, _ = manager._save_aggregate( event=event, hashes=hashes, release=None, **group_kwargs ) event.update(group_id=new_group.id) if event.data.get('tags'): Group.objects.add_tags( new_group, _get_event_environment(event, project, environment_cache), event.data['tags']) return bool(event_list)