diff --git a/static/app/components/profiling/profilingTransactionHovercard.tsx b/static/app/components/profiling/profilingTransactionHovercard.tsx
index 0d3c3461ebc4b8..b71fed6f22a6cf 100644
--- a/static/app/components/profiling/profilingTransactionHovercard.tsx
+++ b/static/app/components/profiling/profilingTransactionHovercard.tsx
@@ -21,6 +21,7 @@ import {
generateProfileSummaryRouteWithQuery,
} from 'sentry/utils/profiling/routes';
import {useLocation} from 'sentry/utils/useLocation';
+import {profilesRouteWithQuery} from 'sentry/views/performance/transactionSummary/transactionProfiles/utils';
import {Button} from '../button';
import Link from '../links/link';
@@ -37,50 +38,73 @@ export function ProfilingTransactionHovercard(props: ProfilingTransactionHoverca
const {project, transaction, organization} = props;
const {query} = useLocation();
- const linkToSummary = generateProfileSummaryRouteWithQuery({
+ if (!organization.features.includes('continuous-profiling-compat')) {
+ const linkToSummary = generateProfileSummaryRouteWithQuery({
+ query,
+ orgSlug: organization.slug,
+ projectSlug: project.slug,
+ transaction,
+ });
+
+ const triggerLink = (
+
+ trackAnalytics('profiling_views.go_to_transaction', {
+ organization,
+ source: 'transaction_hovercard.trigger',
+ })
+ }
+ >
+ {transaction}
+
+ );
+
+ return (
+
+ {transaction}
+
+
+ }
+ body={
+
+ }
+ showUnderline
+ >
+ {triggerLink}
+
+ );
+ }
+
+ const linkToSummary = profilesRouteWithQuery({
query,
orgSlug: organization.slug,
- projectSlug: project.slug,
+ projectID: project.id,
transaction,
});
- const triggerLink = (
+ return (
trackAnalytics('profiling_views.go_to_transaction', {
organization,
- source: 'transaction_hovercard.trigger',
+ source: 'profiling.landing.transaction_table',
})
}
>
{transaction}
);
-
- return (
-
- {transaction}
-
-
- }
- body={
-
- }
- showUnderline
- >
- {triggerLink}
-
- );
}
export function ProfilingTransactionHovercardBody({
diff --git a/static/app/utils/analytics/profilingAnalyticsEvents.tsx b/static/app/utils/analytics/profilingAnalyticsEvents.tsx
index e86e4f7158311b..639299e83224ee 100644
--- a/static/app/utils/analytics/profilingAnalyticsEvents.tsx
+++ b/static/app/utils/analytics/profilingAnalyticsEvents.tsx
@@ -13,6 +13,7 @@ type ProfilingEventSource =
| 'profiling.global_suspect_functions'
| 'profiling.issue.function_regression.list'
| 'profiling.issue.function_regression.transactions'
+ | 'profiling.landing.transaction_table'
| 'profiling_transaction.suspect_functions_table'
| 'profiling_transaction.slowest_functions_table'
| 'profiling_transaction.regressed_functions_table'
diff --git a/static/app/utils/profiling/hooks/useProfileEvents.tsx b/static/app/utils/profiling/hooks/useProfileEvents.tsx
index 217a62dd2d83ec..151b27584b2b20 100644
--- a/static/app/utils/profiling/hooks/useProfileEvents.tsx
+++ b/static/app/utils/profiling/hooks/useProfileEvents.tsx
@@ -14,6 +14,7 @@ export interface UseProfileEventsOptions
fields: readonly F[];
referrer: string;
sort: Sort;
+ continuousProfilingCompat?: boolean;
cursor?: string;
datetime?: PageFilters['datetime'];
enabled?: boolean;
@@ -29,6 +30,7 @@ export function useProfileEvents({
referrer,
query,
sort,
+ continuousProfilingCompat,
cursor,
enabled = true,
refetchOnMount = true,
@@ -38,7 +40,11 @@ export function useProfileEvents({
const organization = useOrganization();
const {selection} = usePageFilters();
- query = `has:profile.id ${query ? `(${query})` : ''}`;
+ if (continuousProfilingCompat) {
+ query = `(has:profile.id OR (has:profiler.id has:thread.id)) ${query ? `(${query})` : ''}`;
+ } else {
+ query = `has:profile.id ${query ? `(${query})` : ''}`;
+ }
const path = `/organizations/${organization.slug}/events/`;
const endpointOptions = {
diff --git a/static/app/views/profiling/content.tsx b/static/app/views/profiling/content.tsx
index fbf2ca516c0330..d97dad89d5ed96 100644
--- a/static/app/views/profiling/content.tsx
+++ b/static/app/views/profiling/content.tsx
@@ -297,6 +297,9 @@ function ProfilingContent({location}: ProfilingContentProps) {
query,
sort,
referrer: 'api.profiling.landing-table',
+ continuousProfilingCompat: organization.features.includes(
+ 'continuous-profiling-compat'
+ ),
});
const transactionsError =