Skip to content

Commit ab9a319

Browse files
committed
ref(replays): clamp connected error query dates to org retention period
Uses outside_retention_with_modified_start to skip fetching trace-connected errors when the replay's date range falls entirely outside the organization's retention window.
1 parent 3515d18 commit ab9a319

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/sentry/replays/usecases/summarize.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
from collections.abc import Generator, Iterator
3-
from datetime import UTC, datetime, timedelta
3+
from datetime import datetime, timedelta
44
from typing import Any, TypedDict
55
from urllib.parse import urlparse
66

@@ -26,6 +26,7 @@
2626
from sentry.services.eventstore.models import Event
2727
from sentry.snuba.referrer import Referrer
2828
from sentry.utils import json, metrics
29+
from sentry.utils.dates import outside_retention_with_modified_start
2930
from sentry.utils.platform_categories import MOBILE
3031

3132
logger = logging.getLogger(__name__)
@@ -556,21 +557,24 @@ def rpc_get_replay_summary_logs(
556557
replay_start = processed_response[0].get("started_at")
557558
replay_end = processed_response[0].get("finished_at")
558559
if replay_start:
559-
start = max(
560-
datetime.fromisoformat(replay_start) - timedelta(seconds=10),
561-
datetime.now(UTC) - timedelta(days=90),
562-
)
560+
start = max(datetime.fromisoformat(replay_start) - timedelta(seconds=10), start)
563561
if replay_end:
564-
end = min(datetime.fromisoformat(replay_end) + timedelta(seconds=10), datetime.now(UTC))
562+
end = min(datetime.fromisoformat(replay_end) + timedelta(seconds=10), end)
563+
564+
# Clamp start to the organization's retention period.
565+
_, start = outside_retention_with_modified_start(start, end, project.organization)
565566

566567
# Fetch same-trace errors.
567-
trace_connected_errors = fetch_trace_connected_errors(
568-
project=project,
569-
trace_ids=trace_ids,
570-
start=start,
571-
end=end,
572-
limit=100,
573-
)
568+
if start >= end:
569+
trace_connected_errors = []
570+
else:
571+
trace_connected_errors = fetch_trace_connected_errors(
572+
project=project,
573+
trace_ids=trace_ids,
574+
start=start,
575+
end=end,
576+
limit=100,
577+
)
574578
trace_connected_error_ids = {x["id"] for x in trace_connected_errors}
575579

576580
# Fetch directly linked errors, if they weren't returned by the trace query.

0 commit comments

Comments
 (0)