Browse Source

Merge pull request #5349 from getsentry/feature/better-ios-grouping

Better iOS Grouping and Removal of old System Symbols
Armin Ronacher 7 years ago
parent
commit
449b7b46cc

+ 4 - 0
CHANGES

@@ -5,6 +5,10 @@ Version 8.17 (Unreleased)
 - Initial (internal) analytics abstraction.
 - Turned on reprocessing by default
 - Added basics for Data Forwarding integrations.
+- Changed the grouping and default `in_app` values for cocoa events.
+- Removed global dsym support.
+- Removed support for legacy apple report format.
+
 - The threads interface now contributes to grouping if it contains a single thread.
 - Added per-key (DSN) rate limits (``project:rate-limits`` feature).
 - Added tsdb statistics for events per-key.

+ 1 - 1
setup.py

@@ -138,7 +138,7 @@ install_requires = [
     'statsd>=3.1.0,<3.2.0',
     'structlog==16.1.0',
     'South==1.0.1',
-    'symsynd>=2.2.0,<3.0.0',
+    'symsynd>=3.0.0,<4.0.0',
     'toronado>=0.0.11,<0.1.0',
     'ua-parser>=0.6.1,<0.8.0',
     'urllib3>=1.14,<1.17',

+ 0 - 8
src/sentry/api/authentication.py

@@ -1,16 +1,13 @@
 from __future__ import absolute_import
 
 from django.contrib.auth.models import AnonymousUser
-from django.utils.crypto import constant_time_compare
 from rest_framework.authentication import (
     BasicAuthentication, get_authorization_header
 )
 from rest_framework.exceptions import AuthenticationFailed
 
-from sentry import options
 from sentry.app import raven
 from sentry.models import ApiKey, ApiToken
-from sentry.models.apikey import ROOT_KEY
 
 
 class QuietBasicAuthentication(BasicAuthentication):
@@ -23,11 +20,6 @@ class ApiKeyAuthentication(QuietBasicAuthentication):
         if password:
             return None
 
-        root_api_key = options.get('system.root-api-key')
-        if root_api_key:
-            if constant_time_compare(root_api_key, userid):
-                return (None, ROOT_KEY)
-
         try:
             key = ApiKey.objects.get_from_cache(key=userid)
         except ApiKey.DoesNotExist:

+ 0 - 3
src/sentry/api/bases/organization.py

@@ -11,7 +11,6 @@ from sentry.models import (
     ApiKey, Organization, OrganizationMemberTeam, OrganizationStatus,
     Project, ReleaseProject, Team
 )
-from sentry.models.apikey import ROOT_KEY
 from sentry.utils import auth
 
 
@@ -41,8 +40,6 @@ class OrganizationPermission(ScopedPermission):
             )
 
         elif request.auth:
-            if request.auth is ROOT_KEY:
-                return True
             return request.auth.organization_id == organization.id
 
         else:

+ 0 - 3
src/sentry/api/bases/team.py

@@ -4,7 +4,6 @@ from sentry.api.base import Endpoint
 from sentry.api.exceptions import ResourceDoesNotExist
 from sentry.app import raven
 from sentry.models import Team, TeamStatus
-from sentry.models.apikey import ROOT_KEY
 
 from .organization import OrganizationPermission
 
@@ -24,8 +23,6 @@ class TeamPermission(OrganizationPermission):
             return result
 
         if not (request.user and request.user.is_authenticated()) and request.auth:
-            if request.auth is ROOT_KEY:
-                return True
             return request.auth.organization_id == team.organization.id
 
         allowed_scopes = set(self.scope_map.get(request.method, []))

+ 0 - 3
src/sentry/api/bases/user.py

@@ -4,13 +4,10 @@ from sentry.api.base import Endpoint
 from sentry.api.exceptions import ResourceDoesNotExist
 from sentry.api.permissions import ScopedPermission
 from sentry.models import User
-from sentry.models.apikey import ROOT_KEY
 
 
 class UserPermission(ScopedPermission):
     def has_object_permission(self, request, view, user):
-        if request.auth is ROOT_KEY:
-            return True
         if request.user == user:
             return True
         if request.auth:

+ 0 - 9
src/sentry/api/endpoints/dsym_files.py

@@ -4,10 +4,8 @@ from rest_framework.response import Response
 from rest_framework import serializers
 
 from sentry.api.base import DocSection
-from sentry.api.base import Endpoint
 from sentry.api.bases.project import ProjectEndpoint, ProjectReleasePermission
 from sentry.api.content_negotiation import ConditionalContentNegotiation
-from sentry.api.permissions import SystemPermission
 from sentry.api.serializers import serialize
 from sentry.api.serializers.rest_framework import ListField
 from sentry.models import ProjectDSymFile, create_files_from_macho_zip, \
@@ -97,13 +95,6 @@ class DSymFilesEndpoint(ProjectEndpoint):
         return upload_from_request(request, project=project)
 
 
-class GlobalDSymFilesEndpoint(Endpoint):
-    permission_classes = (SystemPermission,)
-
-    def post(self, request):
-        return upload_from_request(request, project=None)
-
-
 class UnknownDSymFilesEndpoint(ProjectEndpoint):
     doc_section = DocSection.PROJECTS
     permission_classes = (ProjectReleasePermission,)

+ 0 - 9
src/sentry/api/permissions.py

@@ -2,9 +2,6 @@ from __future__ import absolute_import
 
 from rest_framework import permissions
 
-from sentry.models.apikey import ROOT_KEY
-from sentry.auth.utils import is_privileged_request
-
 
 class NoPermission(permissions.BasePermission):
     def has_permission(self, request, view):
@@ -48,9 +45,3 @@ class SuperuserPermission(permissions.BasePermission):
         if request.is_superuser():
             return True
         return False
-
-
-class SystemPermission(permissions.BasePermission):
-    def has_permission(self, request, view):
-        return request.auth is ROOT_KEY and \
-            is_privileged_request(request)

+ 1 - 2
src/sentry/api/serializers/models/dsym_file.py

@@ -4,12 +4,11 @@ import six
 
 from sentry.api.serializers import Serializer, register, serialize
 from sentry.models import (
-    ProjectDSymFile, GlobalDSymFile, VersionDSymFile, DSymApp
+    ProjectDSymFile, VersionDSymFile, DSymApp
 )
 
 
 @register(ProjectDSymFile)
-@register(GlobalDSymFile)
 class DSymFileSerializer(Serializer):
     def serialize(self, obj, attrs, user):
         d = {

+ 1 - 6
src/sentry/api/urls.py

@@ -99,7 +99,7 @@ from .endpoints.project_release_files import ProjectReleaseFilesEndpoint
 from .endpoints.project_release_file_details import ProjectReleaseFileDetailsEndpoint
 from .endpoints.project_release_commits import ProjectReleaseCommitsEndpoint
 from .endpoints.release_deploys import ReleaseDeploysEndpoint
-from .endpoints.dsym_files import DSymFilesEndpoint, GlobalDSymFilesEndpoint, \
+from .endpoints.dsym_files import DSymFilesEndpoint, \
     UnknownDSymFilesEndpoint, AssociateDSymFilesEndpoint
 from .endpoints.shared_group_details import SharedGroupDetailsEndpoint
 from .endpoints.system_health import SystemHealthEndpoint
@@ -481,11 +481,6 @@ urlpatterns = patterns(
         EventAppleCrashReportEndpoint.as_view(),
         name='sentry-api-0-event-apple-crash-report'),
 
-    # Installation Global Endpoints
-    url(r'^system/global-dsyms/$',
-        GlobalDSymFilesEndpoint.as_view(),
-        name='sentry-api-0-global-dsym-files'),
-
     # Internal
     url(r'^internal/health/$',
         SystemHealthEndpoint.as_view(),

Some files were not shown because too many files changed in this diff