Skip to content

Commit dda0b8f

Browse files
untitakerlynnagara
andauthored
fix(eventstore): Ability to pass group_id to get_event_by_id (#26175)
Co-authored-by: Lyn Nagara <[email protected]>
1 parent 84c80f0 commit dda0b8f

File tree

6 files changed

+24
-10
lines changed

6 files changed

+24
-10
lines changed

src/sentry/api/endpoints/group_events_latest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get(self, request, group):
2626
return client.get(
2727
f"/projects/{event.organization.slug}/{event.project.slug}/events/{event.event_id}/",
2828
request=request,
29-
data={"environment": environments},
29+
data={"environment": environments, "group_id": event.group_id},
3030
)
3131
except client.ApiError as e:
3232
return Response(e.body, status=e.status_code)

src/sentry/api/endpoints/group_events_oldest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def get(self, request, group):
2727
return client.get(
2828
f"/projects/{event.organization.slug}/{event.project.slug}/events/{event.event_id}/",
2929
request=request,
30-
data={"environment": environments},
30+
data={"environment": environments, "group_id": event.group_id},
3131
)
3232
except client.ApiError as e:
3333
return Response(e.body, status=e.status_code)

src/sentry/api/endpoints/group_hashes_split.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def _get_group_filters(group: Group):
220220

221221
def _add_hash(
222222
trees: List[Dict[str, Any]],
223-
project_id: int,
223+
group: Group,
224224
user,
225225
parent_hash: Optional[str],
226226
hash: str,
@@ -229,7 +229,7 @@ def _add_hash(
229229
last_seen,
230230
latest_event_id,
231231
):
232-
event = eventstore.get_event_by_id(project_id, latest_event_id)
232+
event = eventstore.get_event_by_id(group.project_id, latest_event_id, group_id=group.id)
233233

234234
tree = {
235235
"parentId": parent_hash,
@@ -397,7 +397,7 @@ def _render_trees(group: Group, user):
397397

398398
_add_hash(
399399
rv,
400-
group.project_id,
400+
group,
401401
user,
402402
parent_hash,
403403
hash,

src/sentry/api/endpoints/project_event_details.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ def get(self, request, project, event_id):
2626
:auth: required
2727
"""
2828

29-
event = eventstore.get_event_by_id(project.id, event_id)
29+
group_id = request.GET.get("group_id")
30+
group_id = int(group_id) if group_id else None
31+
32+
event = eventstore.get_event_by_id(project.id, event_id, group_id=group_id)
3033

3134
if event is None:
3235
return Response({"detail": "Event not found"}, status=404)

src/sentry/eventstore/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,16 @@ def get_unfetched_events(
175175
"""
176176
raise NotImplementedError
177177

178-
def get_event_by_id(self, project_id, event_id):
178+
def get_event_by_id(self, project_id, event_id, group_id=None):
179179
"""
180180
Gets a single event given a project_id and event_id.
181+
Returns None if an event cannot be found.
181182
182183
Arguments:
183184
project_id (int): Project ID
184185
event_id (str): Event ID
186+
group_id (Optional[int]): If the group ID for this event is already known, pass
187+
it here to save one Snuba query.
185188
"""
186189
raise NotImplementedError
187190

src/sentry/eventstore/snuba/backend.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,12 @@ def __get_events(
171171

172172
return []
173173

174-
def get_event_by_id(self, project_id, event_id):
174+
def get_event_by_id(self, project_id, event_id, group_id=None):
175175
"""
176176
Get an event given a project ID and event ID
177177
Returns None if an event cannot be found
178178
"""
179+
179180
event_id = normalize_event_id(event_id)
180181

181182
if not event_id:
@@ -187,8 +188,15 @@ def get_event_by_id(self, project_id, event_id):
187188
if len(event.data) == 0:
188189
return None
189190

190-
# Load group_id from Snuba if not a transaction
191-
if event.get_event_type() != "transaction":
191+
if group_id is not None:
192+
# Set passed group_id if not a transaction
193+
if event.get_event_type() == "transaction":
194+
logger.warning("eventstore.passed-group-id-for-transaction")
195+
else:
196+
event.group_id = group_id
197+
198+
elif event.get_event_type() != "transaction":
199+
# Load group_id from Snuba if not a transaction
192200
result = snuba.raw_query(
193201
selected_columns=["group_id"],
194202
start=event.datetime,

0 commit comments

Comments
 (0)