Skip to content

Commit

Permalink
Merge pull request #5472 from getsentry/bugfix/create-releases-in-js
Browse files Browse the repository at this point in the history
Create releases if missing in JS code path.
  • Loading branch information
mitsuhiko authored May 31, 2017
2 parents 439c413 + 346caa4 commit a198e5b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 9 deletions.
13 changes: 5 additions & 8 deletions src/sentry/lang/javascript/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class ZeroReturnError(Exception):

from sentry import http
from sentry.interfaces.stacktrace import Stacktrace
from sentry.models import EventError, Release, ReleaseFile
from sentry.models import EventError, ReleaseFile
from sentry.utils.cache import cache
from sentry.utils.files import compress_file
from sentry.utils.hashlib import md5_text
Expand Down Expand Up @@ -491,13 +491,10 @@ def preprocess_step(self, processing_task):
'fetch remote source', self.data['event_id'])
return False

if self.data.get('release'):
self.release = Release.get(
project=self.project,
version=self.data['release'],
)
if self.data.get('dist'):
self.dist = self.release.get_dist(self.data['dist'])
self.release = self.get_release(create=True)
if self.data.get('dist') and self.release:
self.dist = self.release.get_dist(self.data['dist'])

self.populate_source_cache(frames)
return True

Expand Down
27 changes: 26 additions & 1 deletion src/sentry/stacktraces.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

import logging
import hashlib
from datetime import datetime

from collections import namedtuple

from sentry.models import Project
from sentry.models import Project, Release
from sentry.utils.safe import safe_execute
from sentry.utils.cache import cache

Expand Down Expand Up @@ -120,6 +121,30 @@ def __init__(self, data, stacktrace_infos, project=None):
def close(self):
pass

def get_release(self, create=False):
"""Convenient helper to return the release for the current data
and optionally creates the release if it's missing. In case there
is no release info it will return `None`.
"""
release = self.data.get('release')
if not release:
return None
if not create:
return Release.get(
project=self.project,
version=self.data['release']
)
timestamp = self.data.get('timestamp')
if timestamp is not None:
date = datetime.fromtimestamp(timestamp)
else:
date = None
return Release.get_or_create(
project=self.project,
version=self.data['release'],
date_added=date,
)

def handles_frame(self, frame, stacktrace_info):
"""Returns true if this processor can handle this frame. This is the
earliest check and operates on a raw frame and stacktrace info. If
Expand Down

0 comments on commit a198e5b

Please sign in to comment.