diff --git a/static/app/views/explore/contexts/logs/logsPageParams.tsx b/static/app/views/explore/contexts/logs/logsPageParams.tsx index b321ca85edc55e..b35f76f71c642f 100644 --- a/static/app/views/explore/contexts/logs/logsPageParams.tsx +++ b/static/app/views/explore/contexts/logs/logsPageParams.tsx @@ -58,6 +58,11 @@ interface LogsPageParams { * The base search, which doesn't appear in the URL or the search bar, used for adding traceid etc. */ readonly baseSearch?: MutableSearch; + /** + * If provided, add a 'trace:{trace id}' to all queries. + * Used in embedded views like error page and trace page + */ + readonly limitToTraceId?: string; /** * If provided, ignores the project in the location and uses the provided project IDs. * Useful for cross-project traces when project is in the location. @@ -144,6 +149,7 @@ export function LogsPageParamsProvider({ baseSearch, projectIds, analyticsPageSource, + limitToTraceId, }} > {children} @@ -252,6 +258,16 @@ export function useLogsCursor() { return cursor; } +export function useLogsIsFrozen() { + const {isTableFrozen} = useLogsPageParams(); + return !!isTableFrozen; +} + +export function useLogsLimitToTraceId() { + const {limitToTraceId} = useLogsPageParams(); + return limitToTraceId; +} + export function useSetLogsCursor() { const setPageParams = useSetLogsPageParams(); const {setCursorForFrozenPages, isTableFrozen} = useLogsPageParams(); diff --git a/static/app/views/explore/logs/useLogsQuery.tsx b/static/app/views/explore/logs/useLogsQuery.tsx index 9efc6bbba78cda..573d746a4193fb 100644 --- a/static/app/views/explore/logs/useLogsQuery.tsx +++ b/static/app/views/explore/logs/useLogsQuery.tsx @@ -22,6 +22,8 @@ import { useLogsBaseSearch, useLogsCursor, useLogsFields, + useLogsIsFrozen, + useLogsLimitToTraceId, useLogsProjectIds, useLogsRefreshInterval, useLogsSearch, @@ -95,6 +97,8 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number}) const cursor = useLogsCursor(); const _fields = useLogsFields(); const sortBys = useLogsSortBys(); + const isFrozen = useLogsIsFrozen(); + const limitToTraceId = useLogsLimitToTraceId(); const {selection, isReady: pageFiltersReady} = usePageFilters(); const location = useLocation(); const projectIds = useLogsProjectIds(); @@ -112,6 +116,7 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number}) const params = { query: { ...eventView.getEventsAPIPayload(location), + ...(limitToTraceId ? {traceId: limitToTraceId} : {}), cursor, per_page: limit ? limit : undefined, }, @@ -120,7 +125,10 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number}) referrer, }; - const queryKey: ApiQueryKey = [`/organizations/${organization.slug}/events/`, params]; + const queryKey: ApiQueryKey = [ + `/organizations/${organization.slug}/${limitToTraceId && isFrozen ? 'trace-logs' : 'events'}/`, + params, + ]; return { queryKey, @@ -167,8 +175,8 @@ export function useLogsQuery({ isLoading: queryResult.isLoading, queryResult, data: queryResult?.data?.data, - error: queryResult.error, infiniteData: queryResult?.data?.data, + error: queryResult.error, meta: queryResult?.data?.meta, pageLinks: queryResult?.getResponseHeader?.('Link') ?? undefined, };