From aaf2668283bd10875ec36dad9f186203ee47fea7 Mon Sep 17 00:00:00 2001 From: Colton Allen Date: Mon, 15 May 2023 09:53:07 -0500 Subject: [PATCH] feat(replays): Log to stdout when a slow click event is detected (#48775) Temporary measure to evaluate how common slow click events are. --- src/sentry/replays/usecases/ingest/dom_index.py | 13 +++++++++++-- tests/sentry/replays/unit/test_ingest_dom_index.py | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/sentry/replays/usecases/ingest/dom_index.py b/src/sentry/replays/usecases/ingest/dom_index.py index c3376a410749a..e0d501ff3e0ce 100644 --- a/src/sentry/replays/usecases/ingest/dom_index.py +++ b/src/sentry/replays/usecases/ingest/dom_index.py @@ -1,3 +1,4 @@ +import logging import time import uuid from hashlib import md5 @@ -8,6 +9,8 @@ from sentry.utils import json, kafka_config, metrics from sentry.utils.pubsub import KafkaPublisher +logger = logging.getLogger("sentry.replays") + EVENT_LIMIT = 20 replay_publisher: Optional[KafkaPublisher] = None @@ -66,7 +69,7 @@ def parse_replay_actions( segment_data: List[Dict[str, Any]], ) -> Optional[ReplayActionsEvent]: """Parse RRWeb payload to ReplayActionsEvent.""" - actions = get_user_actions(replay_id, segment_data) + actions = get_user_actions(project_id, replay_id, segment_data) if len(actions) == 0: return None @@ -102,6 +105,7 @@ def create_replay_actions_payload( def get_user_actions( + project_id: int, replay_id: str, events: List[Dict[str, Any]], ) -> List[ReplayActionsEventPayloadClick]: @@ -131,7 +135,12 @@ def get_user_actions( if event.get("type") == 5 and event.get("data", {}).get("tag") == "breadcrumb": payload = event["data"].get("payload", {}) - if payload.get("category") == "ui.click": + category = payload.get("category") + if category == "ui.slowClickDetected": + payload["project_id"] = project_id + payload["replay_id"] = replay_id + logger.info("Slow click detected", extra=payload) + elif category == "ui.click": node = payload.get("data", {}).get("node") if node is None: continue diff --git a/tests/sentry/replays/unit/test_ingest_dom_index.py b/tests/sentry/replays/unit/test_ingest_dom_index.py index 3619b91802918..cce8d2dda5e34 100644 --- a/tests/sentry/replays/unit/test_ingest_dom_index.py +++ b/tests/sentry/replays/unit/test_ingest_dom_index.py @@ -45,7 +45,7 @@ def test_get_user_actions(): } ] - user_actions = get_user_actions(uuid.uuid4().hex, events) + user_actions = get_user_actions(1, uuid.uuid4().hex, events) assert len(user_actions) == 1 assert user_actions[0]["node_id"] == 1 assert user_actions[0]["tag"] == "div" @@ -79,7 +79,7 @@ def test_get_user_actions_missing_node(): } ] - user_actions = get_user_actions(uuid.uuid4().hex, events) + user_actions = get_user_actions(1, uuid.uuid4().hex, events) assert len(user_actions) == 0