Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@
'ua-parser>=0.6.1,<0.7.0',
'urllib3>=1.14,<1.15',
'uwsgi>2.0.0,<2.1.0',
'rb>=1.3.0,<2.0.0',
'rb>=1.4.0,<2.0.0',
]

postgres_requires = [
Expand Down
13 changes: 13 additions & 0 deletions src/sentry/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,19 @@ def _save_aggregate(self, event, hashes, release, **kwargs):
(tsdb.models.project, project.id),
], timestamp=event.datetime)

tsdb.record_frequency_multi([
(tsdb.models.frequent_projects_by_organization, {
project.organization_id: {
project.id: 1,
},
}),
(tsdb.models.frequent_issues_by_project, {
project.id: {
group.id: 1,
},
}),
], timestamp=event.datetime)

return group, is_new, is_regression, is_sample

def _handle_regression(self, group, event, release):
Expand Down
36 changes: 26 additions & 10 deletions src/sentry/models/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,27 @@

import logging
import math
import six
import time
import warnings

from base64 import b16decode, b16encode
from datetime import timedelta

import six
from django.core.urlresolvers import reverse
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _

from sentry.app import buffer
from sentry.app import buffer, tsdb
from sentry.constants import (
DEFAULT_LOGGER_NAME, LOG_LEVELS, MAX_CULPRIT_LENGTH, EVENT_ORDERING_KEY,
DEFAULT_LOGGER_NAME, EVENT_ORDERING_KEY, LOG_LEVELS, MAX_CULPRIT_LENGTH
)
from sentry.db.models import (
BaseManager, BoundedIntegerField, BoundedPositiveIntegerField,
FlexibleForeignKey, Model, GzippedDictField, sane_repr
FlexibleForeignKey, GzippedDictField, Model, sane_repr
)
from sentry.utils.http import absolute_uri
from sentry.utils.strings import truncatechars, strip
from sentry.utils.strings import strip, truncatechars


# TODO(dcramer): pull in enum library
Expand Down Expand Up @@ -58,12 +58,16 @@ def add_tags(self, group, tags):
project_id = group.project_id
date = group.last_seen

for tag_item in tags:
if len(tag_item) == 2:
(key, value), data = tag_item, None
def normalize(item):
if len(item) == 2:
(key, value), data = item, None
else:
key, value, data = tag_item
key, value, data = item
return key, value, data

tags = map(normalize, tags)

for key, value, data in tags:
buffer.incr(TagValue, {
'times_seen': 1,
}, {
Expand All @@ -86,6 +90,18 @@ def add_tags(self, group, tags):
'last_seen': date,
})

metrics = {}
for key, value, data in tags:
metric = metrics.setdefault(u'{}:{}'.format(group.id, key), {})
metric[value] = metric.get(value, 0.0) + 1.0

# XXX: No access to the event where the tags were recorded here, this
# assumes ``last_seen`` is updated before this function is called!!!
tsdb.record_frequency_multi(
((tsdb.models.frequent_values_by_issue_tag, metrics),),
timestamp=group.last_seen
)


class Group(Model):
"""
Expand Down
Loading