Skip to content

Commit 04d76b5

Browse files
colin-sentryandrewshie-sentry
authored andcommitted
feat(ourlogs): Use /trace-logs endpoint (#92577)
The /events endpoint does not allow some users to use ?project=-1, we added a new endpoint which acts like /events but supports multi-project search if the trace ID is explicitly added.
1 parent 36c3312 commit 04d76b5

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

static/app/views/explore/contexts/logs/logsPageParams.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ interface LogsPageParams {
5858
* The base search, which doesn't appear in the URL or the search bar, used for adding traceid etc.
5959
*/
6060
readonly baseSearch?: MutableSearch;
61+
/**
62+
* If provided, add a 'trace:{trace id}' to all queries.
63+
* Used in embedded views like error page and trace page
64+
*/
65+
readonly limitToTraceId?: string;
6166
/**
6267
* If provided, ignores the project in the location and uses the provided project IDs.
6368
* Useful for cross-project traces when project is in the location.
@@ -144,6 +149,7 @@ export function LogsPageParamsProvider({
144149
baseSearch,
145150
projectIds,
146151
analyticsPageSource,
152+
limitToTraceId,
147153
}}
148154
>
149155
{children}
@@ -252,6 +258,16 @@ export function useLogsCursor() {
252258
return cursor;
253259
}
254260

261+
export function useLogsIsFrozen() {
262+
const {isTableFrozen} = useLogsPageParams();
263+
return !!isTableFrozen;
264+
}
265+
266+
export function useLogsLimitToTraceId() {
267+
const {limitToTraceId} = useLogsPageParams();
268+
return limitToTraceId;
269+
}
270+
255271
export function useSetLogsCursor() {
256272
const setPageParams = useSetLogsPageParams();
257273
const {setCursorForFrozenPages, isTableFrozen} = useLogsPageParams();

static/app/views/explore/logs/useLogsQuery.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import {
2222
useLogsBaseSearch,
2323
useLogsCursor,
2424
useLogsFields,
25+
useLogsIsFrozen,
26+
useLogsLimitToTraceId,
2527
useLogsProjectIds,
2628
useLogsRefreshInterval,
2729
useLogsSearch,
@@ -95,6 +97,8 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number})
9597
const cursor = useLogsCursor();
9698
const _fields = useLogsFields();
9799
const sortBys = useLogsSortBys();
100+
const isFrozen = useLogsIsFrozen();
101+
const limitToTraceId = useLogsLimitToTraceId();
98102
const {selection, isReady: pageFiltersReady} = usePageFilters();
99103
const location = useLocation();
100104
const projectIds = useLogsProjectIds();
@@ -112,6 +116,7 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number})
112116
const params = {
113117
query: {
114118
...eventView.getEventsAPIPayload(location),
119+
...(limitToTraceId ? {traceId: limitToTraceId} : {}),
115120
cursor,
116121
per_page: limit ? limit : undefined,
117122
},
@@ -120,7 +125,10 @@ function useLogsQueryKey({limit, referrer}: {referrer: string; limit?: number})
120125
referrer,
121126
};
122127

123-
const queryKey: ApiQueryKey = [`/organizations/${organization.slug}/events/`, params];
128+
const queryKey: ApiQueryKey = [
129+
`/organizations/${organization.slug}/${limitToTraceId && isFrozen ? 'trace-logs' : 'events'}/`,
130+
params,
131+
];
124132

125133
return {
126134
queryKey,
@@ -167,8 +175,8 @@ export function useLogsQuery({
167175
isLoading: queryResult.isLoading,
168176
queryResult,
169177
data: queryResult?.data?.data,
170-
error: queryResult.error,
171178
infiniteData: queryResult?.data?.data,
179+
error: queryResult.error,
172180
meta: queryResult?.data?.meta,
173181
pageLinks: queryResult?.getResponseHeader?.('Link') ?? undefined,
174182
};

0 commit comments

Comments
 (0)