diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index 5e35b5c67760d5..2657da81e1cb60 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -609,6 +609,9 @@ def SOCIAL_AUTH_DEFAULT_USERNAME(): ), Queue("events.save_event", routing_key="events.save_event"), Queue("events.symbolicate_event", routing_key="events.symbolicate_event"), + Queue( + "events.symbolicate_event_low_priority", routing_key="events.symbolicate_event_low_priority" + ), Queue("files.delete", routing_key="files.delete"), Queue( "group_owners.process_suspect_commits", routing_key="group_owners.process_suspect_commits" diff --git a/src/sentry/tasks/store.py b/src/sentry/tasks/store.py index 0cdd5949c23994..f468c20b96fe56 100644 --- a/src/sentry/tasks/store.py +++ b/src/sentry/tasks/store.py @@ -344,6 +344,32 @@ def symbolicate_event(cache_key, start_time=None, event_id=None, **kwargs): ) +@instrumented_task( + name="sentry.tasks.store.symbolicate_event_low_priority", + queue="events.symbolicate_event_low_priority", + time_limit=settings.SYMBOLICATOR_PROCESS_EVENT_HARD_TIMEOUT + 30, + soft_time_limit=settings.SYMBOLICATOR_PROCESS_EVENT_HARD_TIMEOUT + 20, + acks_late=True, +) +def symbolicate_event_low_priority(cache_key, start_time=None, event_id=None, **kwargs): + """ + Handles event symbolication using the external service: symbolicator. + + This puts the task on the low priority queue. Projects whose symbolication + events misbehave get sent there to protect the main queue. + + :param string cache_key: the cache key for the event data + :param int start_time: the timestamp when the event was ingested + :param string event_id: the event identifier + """ + return _do_symbolicate_event( + cache_key=cache_key, + start_time=start_time, + event_id=event_id, + symbolicate_task=symbolicate_event_low_priority, + ) + + @instrumented_task( name="sentry.tasks.store.symbolicate_event_from_reprocessing", queue="events.reprocessing.symbolicate_event",