diff --git a/snuba/admin/static/tracing/query_display.tsx b/snuba/admin/static/tracing/query_display.tsx index ec7ce55ebfd..992941bf2a7 100644 --- a/snuba/admin/static/tracing/query_display.tsx +++ b/snuba/admin/static/tracing/query_display.tsx @@ -107,10 +107,24 @@ function QueryDisplay(props: { options={storages} /> - +
+ ) => + setQuery((prevQuery) => ({ + ...prevQuery, + gather_profile_events: evt.currentTarget.checked, + })) + } + onLabel="PROFILE" + offLabel="NO PROFILE" + size="md" + /> + +

Query results

diff --git a/snuba/admin/static/tracing/types.tsx b/snuba/admin/static/tracing/types.tsx index e9c0a8a8747..ae6c0f7bc7b 100644 --- a/snuba/admin/static/tracing/types.tsx +++ b/snuba/admin/static/tracing/types.tsx @@ -1,6 +1,7 @@ -type TracingRequest = { - storage: string; +export type TracingRequest = { sql: string; + storage: string; + gather_profile_events?: boolean; }; type TracingResult = { diff --git a/snuba/admin/views.py b/snuba/admin/views.py index d8ee8a04ad0..b70a2d1beb5 100644 --- a/snuba/admin/views.py +++ b/snuba/admin/views.py @@ -496,7 +496,14 @@ def clickhouse_trace_query() -> Response: query_trace = run_query_and_get_trace(storage, raw_sql) - gather_profile_events(query_trace, storage) + if req.get("gather_profile_events", True): + try: + gather_profile_events(query_trace, storage) + except Exception: + logger.warning( + "Error gathering profile events, returning trace anyway", + exc_info=True, + ) return make_response(jsonify(asdict(query_trace)), 200) except InvalidCustomQuery as err: return make_response(