From ea073b118a41fd63e266bd5ba1292409d9c72812 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Thu, 11 Apr 2019 09:07:40 +0200 Subject: [PATCH] feat(unreal): Adds custom event payload files to unreal (#12660) This un-featuregates the custom event payload attachment files and adds support for them to the unreal endpoint. --- requirements-base.txt | 2 +- src/sentry/web/api.py | 44 +++++++++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/requirements-base.txt b/requirements-base.txt index afae2a0f01eedd..7da7bab602cdac 100644 --- a/requirements-base.txt +++ b/requirements-base.txt @@ -65,7 +65,7 @@ sqlparse>=0.1.16,<0.2.0 statsd>=3.1.0,<3.2.0 strict-rfc3339>=0.7 structlog==16.1.0 -symbolic>=6.0.4,<7.0.0 +symbolic>=6.0.6,<7.0.0 toronado>=0.0.11,<0.1.0 ua-parser>=0.6.1,<0.8.0 # for bitbucket client diff --git a/src/sentry/web/api.py b/src/sentry/web/api.py index dc794956a8ecde..a9fa35ab3a669a 100644 --- a/src/sentry/web/api.py +++ b/src/sentry/web/api.py @@ -37,8 +37,10 @@ from sentry.event_manager import EventManager from sentry.interfaces import schemas from sentry.interfaces.base import get_interface -from sentry.lang.native.unreal import process_unreal_crash, merge_apple_crash_report, unreal_attachment_type, merge_unreal_context_event, merge_unreal_logs_event -from sentry.lang.native.minidump import merge_process_state_event, process_minidump, merge_attached_event, merge_attached_breadcrumbs, MINIDUMP_ATTACHMENT_TYPE +from sentry.lang.native.unreal import process_unreal_crash, merge_apple_crash_report, \ + unreal_attachment_type, merge_unreal_context_event, merge_unreal_logs_event +from sentry.lang.native.minidump import merge_process_state_event, process_minidump, \ + merge_attached_event, merge_attached_breadcrumbs, MINIDUMP_ATTACHMENT_TYPE from sentry.models import Project, OrganizationOption, Organization from sentry.signals import ( event_accepted, event_dropped, event_filtered, event_received) @@ -698,23 +700,25 @@ def post(self, request, project, **kwargs): attachments = [] minidump.seek(0) attachments.append(CachedAttachment.from_upload(minidump, type=MINIDUMP_ATTACHMENT_TYPE)) + has_event_attachments = features.has('organizations:event-attachments', + project.organization, actor=request.user) # Append all other files as generic attachments. We can skip this if the # feature is disabled since they won't be saved. - if features.has('organizations:event-attachments', - project.organization, actor=request.user): - for name, file in six.iteritems(request.FILES): - if name == 'upload_file_minidump': - continue - # Known attachment: msgpack event - if name == "__sentry-event": - merge_attached_event(file, data) - continue - if name == "__sentry-breadcrumb1" or name == "__sentry-breadcrumb2": - merge_attached_breadcrumbs(file, data) - continue - - # Add any other file as attachment + for name, file in six.iteritems(request.FILES): + if name == 'upload_file_minidump': + continue + + # Known attachment: msgpack event + if name == "__sentry-event": + merge_attached_event(file, data) + continue + if name in ("__sentry-breadcrumb1", "__sentry-breadcrumb2"): + merge_attached_breadcrumbs(file, data) + continue + + # Add any other file as attachment + if has_event_attachments: attachments.append(CachedAttachment.from_upload(file)) try: @@ -808,6 +812,14 @@ def post(self, request, project, **kwargs): minidumps_logger.exception(e) for file in unreal.files(): + # Known attachment: msgpack event + if file.name == "__sentry-event": + merge_attached_event(file.open_stream(), event) + continue + if file.name in ("__sentry-breadcrumb1", "__sentry-breadcrumb2"): + merge_attached_breadcrumbs(file.open_stream(), event) + continue + # Always store the minidump in attachments so we can access it during # processing, regardless of the event-attachments feature. This will # allow us to stack walk again with CFI once symbols are loaded.