diff --git a/src/sentry/eventstore/processing/base.py b/src/sentry/eventstore/processing/base.py index 03f90c65a1303..12459dbb29542 100644 --- a/src/sentry/eventstore/processing/base.py +++ b/src/sentry/eventstore/processing/base.py @@ -38,6 +38,9 @@ def exists(self, event: Event) -> bool: return self.get(key) is not None def store(self, event: Event, unprocessed: bool = False) -> str: + if not event.get('event_id') or not event.get('project'): + logger.error(f\"store method called with event missing 'event_id' or 'project'. Event data: {event}\") + return with sentry_sdk.start_span(op="eventstore.processing.store"): key = cache_key_for_event(event) if unprocessed: diff --git a/src/sentry/utils/cache.py b/src/sentry/utils/cache.py index 2d7914b4cb9c2..281080ce01a86 100644 --- a/src/sentry/utils/cache.py +++ b/src/sentry/utils/cache.py @@ -40,5 +40,9 @@ def __get__(self, obj: Any, type: Any = None) -> T: return value -def cache_key_for_event(data: Mapping[str, Any]) -> str: - return "e:{}:{}".format(data["event_id"], data["project"]) + def cache_key_for_event(data: Mapping[str, Any]) -> str: + event_id = data.get('event_id', 'unknown_event_id') + project = data.get('project', 'unknown_project') + if event_id == 'unknown_event_id' or project == 'unknown_project': + logger.error(f\"cache_key_for_event called with missing data. event_id: {event_id}, project: {project}\") + return \"e:{}:{}'.format(event_id, project)