@@ -153,6 +153,7 @@ def _rehash_group_events(group, limit=100):
153153
154154def merge_objects (models , group , new_group , limit = 1000 ,
155155 logger = None ):
156+ from sentry .models import GroupTagKey , GroupTagValue
156157
157158 has_more = False
158159 for model in models :
@@ -161,7 +162,6 @@ def merge_objects(models, group, new_group, limit=1000,
161162 new_group )
162163 all_fields = model ._meta .get_all_field_names ()
163164 has_group = 'group' in all_fields
164- has_values_seen = 'values_seen' in all_fields
165165 if has_group :
166166 queryset = model .objects .filter (group = group )
167167 else :
@@ -184,20 +184,23 @@ def merge_objects(models, group, new_group, limit=1000,
184184
185185 if delete :
186186 # Before deleting, we want to merge in counts
187- if has_values_seen :
188- try :
187+ try :
188+ if model == GroupTagKey :
189189 with transaction .atomic (using = router .db_for_write (model )):
190- if has_group :
191- model .objects .filter (
192- group = new_group ,
193- ).update (values_seen = F ('values_seen' ) + obj .values_seen )
194- else :
195- model .objects .filter (
196- group_id = new_group .id ,
197- ).update (values_seen = F ('values_seen' ) + obj .values_seen )
198- except DataError :
199- # it's possible to hit an out of range value for counters
200- pass
190+ model .objects .filter (
191+ group = new_group ,
192+ key = obj .key ,
193+ ).update (values_seen = F ('values_seen' ) + obj .values_seen )
194+ elif model == GroupTagValue :
195+ with transaction .atomic (using = router .db_for_write (model )):
196+ model .objects .filter (
197+ group = new_group ,
198+ key = obj .key ,
199+ value = obj .value ,
200+ ).update (times_seen = F ('times_seen' ) + obj .times_seen )
201+ except DataError :
202+ # it's possible to hit an out of range value for counters
203+ pass
201204 obj .delete ()
202205 has_more = True
203206
0 commit comments