diff --git a/src/sentry/features/temporary.py b/src/sentry/features/temporary.py index 10b738bebd2c79..d3c3d937aceab9 100644 --- a/src/sentry/features/temporary.py +++ b/src/sentry/features/temporary.py @@ -361,6 +361,8 @@ def register_temporary_features(manager: FeatureManager) -> None: manager.add("organizations:replay-ai-summaries-mobile", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) # Enable replay AI summaries for web replays manager.add("organizations:replay-ai-summaries", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) + # Enable reading replay details using EAP query + manager.add("organizations:replay-details-eap-query", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enable version 2 of release serializer manager.add("organizations:releases-serializer-v2", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) # Enable version 2 of reprocessing (completely distinct from v1) diff --git a/src/sentry/replays/endpoints/organization_replay_details.py b/src/sentry/replays/endpoints/organization_replay_details.py index 25004500097f44..d34c980f8152e0 100644 --- a/src/sentry/replays/endpoints/organization_replay_details.py +++ b/src/sentry/replays/endpoints/organization_replay_details.py @@ -30,7 +30,7 @@ def query_replay_instance_eap( start: datetime, end: datetime, organization_id: int, - request_user_id: int, + request_user_id: int | None, referrer: str = "replays.query.details_query", ): select = [ @@ -159,14 +159,25 @@ def get(self, request: Request, organization: Organization, replay_id: str) -> R projects = self.get_projects(request, organization, include_all_accessible=True) project_ids = [project.id for project in projects] - snuba_response = query_replay_instance( - project_id=project_ids, - replay_id=replay_id, - start=filter_params["start"], - end=filter_params["end"], - organization=organization, - request_user_id=request.user.id, - ) + # Use EAP query if feature flag is enabled + if features.has("organizations:replay-details-eap-query", organization): + snuba_response = query_replay_instance_eap( + project_ids=project_ids, + replay_ids=[replay_id], + start=filter_params["start"], + end=filter_params["end"], + organization_id=organization.id, + request_user_id=request.user.id, + )["data"] + else: + snuba_response = query_replay_instance( + project_id=project_ids, + replay_id=replay_id, + start=filter_params["start"], + end=filter_params["end"], + organization=organization, + request_user_id=request.user.id, + ) response = process_raw_response( snuba_response,