Skip to content

Commit 1870366

Browse files
DominikB2014andrewshie-sentry
authored andcommitted
ref(insights): remove eap conditions caches/queues/database (#95230)
We can remove eap conditions now that insights+eap is at 100%. This PR additionally removes the `useFullSpanFromTrace` feature in the span description component. This isn't needed for a few reasons. 1. With eap, we have all the fields already available, no need to grab them from the trace. 2. We don't store the actual eventId in the span, so we can't look up the event json of the parent transaction with only a span.
1 parent ab870d1 commit 1870366

15 files changed

+135
-459
lines changed

static/app/components/performance/spanSearchQueryBuilder.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ function IndexedSpanSearchQueryBuilder({
190190
return <SearchQueryBuilder {...searchQueryBuilderProps} />;
191191
}
192192

193-
function EapSpanSearchQueryBuilderWrapper(props: SpanSearchQueryBuilderProps) {
193+
export function EapSpanSearchQueryBuilderWrapper(props: SpanSearchQueryBuilderProps) {
194194
const {tags: numberTags} = useTraceItemTags('number');
195195
const {tags: stringTags} = useTraceItemTags('string');
196196

static/app/views/insights/cache/components/charts/transactionDurationChartWithSamples.tsx

Lines changed: 14 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,9 @@ import {Referrer} from 'sentry/views/insights/cache/referrers';
77
// TODO(release-drawer): Only used in cache/components/samplePanel
88
// eslint-disable-next-line no-restricted-imports
99
import {InsightsLineChartWidget} from 'sentry/views/insights/common/components/insightsLineChartWidget';
10-
import type {DiscoverSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries';
11-
import {
12-
useEAPSeries,
13-
useMetricsSeries,
14-
} from 'sentry/views/insights/common/queries/useDiscoverSeries';
15-
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
16-
import type {SearchHook, SpanQueryFilters} from 'sentry/views/insights/types';
17-
import {MetricsFields, SpanFields} from 'sentry/views/insights/types';
10+
import {useEAPSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries';
11+
import type {SpanQueryFilters} from 'sentry/views/insights/types';
12+
import {SpanFields} from 'sentry/views/insights/types';
1813

1914
type Props = {
2015
samples: Samples;
@@ -28,10 +23,19 @@ export function TransactionDurationChartWithSamples({samples}: Props) {
2823
},
2924
});
3025

31-
const {search} = useTransactionDurationSearch({transaction});
26+
const search = MutableSearch.fromQueryObject({
27+
transaction,
28+
is_transaction: 'true',
29+
} satisfies SpanQueryFilters);
3230
const referrer = Referrer.SAMPLES_CACHE_TRANSACTION_DURATION_CHART;
3331

34-
const {data, isPending, error} = useTransactionDurationSeries({search});
32+
const {data, isPending, error} = useEAPSeries(
33+
{
34+
search,
35+
yAxis: [`avg(${SpanFields.SPAN_DURATION})`],
36+
},
37+
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
38+
);
3539

3640
return (
3741
<InsightsLineChartWidget
@@ -45,52 +49,3 @@ export function TransactionDurationChartWithSamples({samples}: Props) {
4549
/>
4650
);
4751
}
48-
49-
const useTransactionDurationSearch = ({
50-
transaction,
51-
}: {
52-
transaction: string;
53-
}): SearchHook => {
54-
const useEap = useInsightsEap();
55-
const search = useEap
56-
? MutableSearch.fromQueryObject({
57-
transaction,
58-
is_transaction: 'true',
59-
} satisfies SpanQueryFilters)
60-
: MutableSearch.fromQueryObject({transaction} satisfies SpanQueryFilters);
61-
62-
return {search};
63-
};
64-
65-
const useTransactionDurationSeries = ({search}: {search: MutableSearch}) => {
66-
const useEap = useInsightsEap();
67-
68-
const metricsResult = useMetricsSeries(
69-
{
70-
yAxis: [`avg(${MetricsFields.TRANSACTION_DURATION})`],
71-
search,
72-
transformAliasToInputFormat: true,
73-
enabled: !useEap,
74-
},
75-
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION_CHART
76-
);
77-
78-
const eapResult = useEAPSeries(
79-
{
80-
search,
81-
yAxis: [`avg(${SpanFields.SPAN_DURATION})`],
82-
enabled: useEap,
83-
},
84-
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
85-
);
86-
87-
const result = useEap ? eapResult : metricsResult;
88-
const finalData: {['avg(span.duration)']: DiscoverSeries} = useEap
89-
? eapResult.data
90-
: {
91-
[`avg(${SpanFields.SPAN_DURATION})`]:
92-
metricsResult.data['avg(transaction.duration)'],
93-
};
94-
95-
return {...result, data: finalData};
96-
};

static/app/views/insights/cache/components/samplePanel.tsx

Lines changed: 19 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import keyBy from 'lodash/keyBy';
44
import {Button} from 'sentry/components/core/button';
55
import {CompactSelect} from 'sentry/components/core/compactSelect';
66
import {EventDrawerHeader} from 'sentry/components/events/eventDrawer';
7-
import {SpanSearchQueryBuilder} from 'sentry/components/performance/spanSearchQueryBuilder';
7+
import {EapSpanSearchQueryBuilderWrapper} from 'sentry/components/performance/spanSearchQueryBuilder';
88
import {t} from 'sentry/locale';
99
import {trackAnalytics} from 'sentry/utils/analytics';
1010
import {DurationUnit, RateUnit, SizeUnit} from 'sentry/utils/discover/fields';
@@ -32,18 +32,15 @@ import {SampleDrawerHeaderTransaction} from 'sentry/views/insights/common/compon
3232
import {
3333
useDiscoverOrEap,
3434
useEAPSpans,
35-
useMetrics,
3635
useSpanMetrics,
3736
useSpansIndexed,
3837
} from 'sentry/views/insights/common/queries/useDiscover';
39-
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
4038
import {
4139
DataTitles,
4240
getThroughputTitle,
4341
} from 'sentry/views/insights/common/views/spans/types';
4442
import {InsightsSpanTagProvider} from 'sentry/views/insights/pages/insightsSpanTagProvider';
4543
import type {
46-
MetricsQueryFilters,
4744
SpanIndexedQueryFilters,
4845
SpanIndexedResponse,
4946
SpanMetricsQueryFilters,
@@ -64,7 +61,6 @@ export function CacheSamplePanel() {
6461
const location = useLocation();
6562
const organization = useOrganization();
6663
const {selection} = usePageFilters();
67-
const useEap = useInsightsEap();
6864

6965
const query = useLocationQuery({
7066
fields: {
@@ -119,18 +115,23 @@ export function CacheSamplePanel() {
119115
);
120116

121117
const {data: transactionDurationData, isPending: isTransactionDurationLoading} =
122-
useTransactionDuration({transaction: query.transaction});
118+
useEAPSpans(
119+
{
120+
search: MutableSearch.fromQueryObject({
121+
transaction: query.transaction,
122+
is_transaction: 'true',
123+
} satisfies SpanQueryFilters),
124+
fields: [`avg(${SpanFields.SPAN_DURATION})`],
125+
},
126+
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
127+
);
123128

124129
const sampleFilters: SpanIndexedQueryFilters = {
125130
...BASE_FILTERS,
126131
transaction: query.transaction,
127132
project_id: query.project,
128133
};
129134

130-
const transactionIdField = useEap
131-
? SpanIndexedField.TRANSACTION_SPAN_ID
132-
: SpanIndexedField.TRANSACTION_ID;
133-
134135
const useIndexedCacheSpans = (
135136
isCacheHit: SpanIndexedResponse['cache.hit'],
136137
limit: number
@@ -153,7 +154,6 @@ export function CacheSamplePanel() {
153154
SpanIndexedField.SPAN_OP,
154155
SpanIndexedField.CACHE_ITEM_SIZE,
155156
SpanIndexedField.TRACE,
156-
...(useEap ? [] : ([SpanIndexedField.TRANSACTION_ID] as const)),
157157
],
158158
sorts: [SPAN_SAMPLES_SORT],
159159
limit,
@@ -189,11 +189,10 @@ export function CacheSamplePanel() {
189189
return [...(cacheHitSamples || []), ...(cacheMissSamples || [])];
190190
}, [cacheHitSamples, cacheMissSamples]);
191191

192-
const transactionIds = cacheSamples?.map(span => span[transactionIdField]) || [];
192+
const transactionIds =
193+
cacheSamples?.map(span => span[SpanIndexedField.TRANSACTION_SPAN_ID]) || [];
193194
const traceIds = cacheSamples?.map(span => span.trace) || [];
194-
const transactionDurationSearch = useEap
195-
? `${SpanIndexedField.TRANSACTION_SPAN_ID}:[${transactionIds.join(',')}] trace:[${traceIds.join(',')}] is_transaction:true`
196-
: `id:[${transactionIds.join(',')}]`;
195+
const transactionDurationSearch = `${SpanIndexedField.TRANSACTION_SPAN_ID}:[${transactionIds.join(',')}] trace:[${traceIds.join(',')}] is_transaction:true`;
197196

198197
const {
199198
data: transactionData,
@@ -213,9 +212,11 @@ export function CacheSamplePanel() {
213212
return cacheSamples.map(span => ({
214213
...span,
215214
'transaction.duration':
216-
transactionDurationsMap[span[transactionIdField]]?.['span.duration']!,
215+
transactionDurationsMap[span[SpanIndexedField.TRANSACTION_SPAN_ID]]?.[
216+
'span.duration'
217+
]!,
217218
}));
218-
}, [cacheSamples, transactionData, transactionIdField]);
219+
}, [cacheSamples, transactionData]);
219220

220221
const spanSamplesById = useMemo(() => {
221222
return keyBy(spansWithDuration, 'id');
@@ -356,13 +357,12 @@ export function CacheSamplePanel() {
356357
</ModuleLayout.Half>
357358

358359
<ModuleLayout.Full>
359-
<SpanSearchQueryBuilder
360+
<EapSpanSearchQueryBuilderWrapper
360361
searchSource={`${ModuleName.CACHE}-sample-panel`}
361362
initialQuery={query.spanSearchQuery}
362363
onSearch={handleSearch}
363364
placeholder={t('Search for span attributes')}
364365
projects={selection.projects}
365-
useEap={useEap}
366366
/>
367367
</ModuleLayout.Full>
368368

@@ -432,38 +432,3 @@ const CACHE_STATUS_OPTIONS = [
432432
label: t('Miss'),
433433
},
434434
];
435-
436-
const useTransactionDuration = ({transaction}: {transaction: string}) => {
437-
const useEap = useInsightsEap();
438-
439-
const metricsResult = useMetrics(
440-
{
441-
enabled: !useEap && Boolean(transaction),
442-
search: MutableSearch.fromQueryObject({
443-
transaction,
444-
} satisfies MetricsQueryFilters),
445-
fields: [`avg(${MetricsFields.TRANSACTION_DURATION})`],
446-
},
447-
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
448-
);
449-
450-
const eapResult = useEAPSpans(
451-
{
452-
search: MutableSearch.fromQueryObject({
453-
transaction,
454-
is_transaction: 'true',
455-
} satisfies SpanQueryFilters),
456-
fields: [`avg(${SpanFields.SPAN_DURATION})`],
457-
},
458-
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
459-
);
460-
461-
const result = useEap ? eapResult : metricsResult;
462-
const finalData: Array<{[`avg(span.duration)`]: number}> = useEap
463-
? eapResult.data
464-
: metricsResult.data.map(row => ({
465-
'avg(span.duration)': row[`avg(${MetricsFields.TRANSACTION_DURATION})`],
466-
}));
467-
468-
return {...result, data: finalData};
469-
};

static/app/views/insights/cache/views/cacheLandingPage.spec.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,11 @@ describe('CacheLandingPage', function () {
146146
query: {
147147
dataset: 'metrics',
148148
environment: [],
149-
field: ['avg(transaction.duration)', 'transaction'],
149+
field: ['avg(span.duration)', 'transaction'],
150150
per_page: 50,
151151
noPagination: true,
152152
project: [],
153-
query: 'transaction:["my-transaction"]',
153+
query: 'transaction:["my-transaction"] AND is_transaction:true',
154154
referrer: 'api.performance.cache.landing-cache-transaction-duration',
155155
statsPeriod: '10d',
156156
},
@@ -206,11 +206,11 @@ describe('CacheLandingPage', function () {
206206
query: {
207207
dataset: 'metrics',
208208
environment: [],
209-
field: ['avg(transaction.duration)', 'transaction'],
209+
field: ['avg(span.duration)', 'transaction'],
210210
noPagination: true,
211211
per_page: 50,
212212
project: [],
213-
query: 'transaction:["transaction with \\"quote\\""]',
213+
query: 'transaction:["transaction with \\"quote\\""] AND is_transaction:true',
214214
referrer: 'api.performance.cache.landing-cache-transaction-duration',
215215
statsPeriod: '10d',
216216
},
@@ -407,13 +407,13 @@ const setRequestMocks = (organization: Organization) => {
407407
data: [
408408
{
409409
transaction: 'my-transaction',
410-
'avg(transaction.duration)': 456,
410+
'avg(span.duration)': 456,
411411
},
412412
],
413413
meta: {
414414
fields: {
415415
transaction: 'string',
416-
'avg(transaction.duration)': 'duration',
416+
'avg(span.duration)': 'duration',
417417
},
418418
units: {},
419419
},

static/app/views/insights/cache/views/cacheLandingPage.tsx

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,10 @@ import {useSpanMetricsSeries} from 'sentry/views/insights/common/queries/useDisc
3636
import {useHasFirstSpan} from 'sentry/views/insights/common/queries/useHasFirstSpan';
3737
import {useOnboardingProject} from 'sentry/views/insights/common/queries/useOnboardingProject';
3838
import {combineMeta} from 'sentry/views/insights/common/utils/combineMeta';
39-
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
4039
import {useSamplesDrawer} from 'sentry/views/insights/common/utils/useSamplesDrawer';
4140
import {QueryParameterNames} from 'sentry/views/insights/common/views/queryParameters';
4241
import {BackendHeader} from 'sentry/views/insights/pages/backend/backendPageHeader';
43-
import {
44-
type MetricsProperty,
45-
ModuleName,
46-
SpanFunction,
47-
SpanMetricsField,
48-
} from 'sentry/views/insights/types';
42+
import {ModuleName, SpanFunction, SpanMetricsField} from 'sentry/views/insights/types';
4943

5044
const {CACHE_MISS_RATE} = SpanFunction;
5145
const {CACHE_ITEM_SIZE} = SpanMetricsField;
@@ -66,7 +60,6 @@ const CACHE_ERROR_MESSAGE = 'Column cache.hit was not found in metrics indexer';
6660
export function CacheLandingPage() {
6761
const location = useLocation();
6862
const {setPageInfo, pageAlert} = usePageAlert();
69-
const useEap = useInsightsEap();
7063

7164
const sortField = decodeScalar(location.query?.[QueryParameterNames.TRANSACTIONS_SORT]);
7265

@@ -113,13 +106,7 @@ export function CacheLandingPage() {
113106
Referrer.LANDING_CACHE_TRANSACTION_LIST
114107
);
115108

116-
const search = useEap
117-
? `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}] AND is_transaction:true`
118-
: `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}]`;
119-
120-
const fields: MetricsProperty[] = useEap
121-
? ['avg(span.duration)', 'transaction']
122-
: [`avg(transaction.duration)`, 'transaction'];
109+
const search = `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}] AND is_transaction:true`;
123110

124111
const {
125112
data: transactionDurationData,
@@ -129,7 +116,7 @@ export function CacheLandingPage() {
129116
} = useMetrics(
130117
{
131118
search,
132-
fields,
119+
fields: ['avg(span.duration)', 'transaction'],
133120
enabled: !isTransactionsListFetching && transactionsList.length > 0,
134121
noPagination: true,
135122
},
@@ -168,11 +155,8 @@ export function CacheLandingPage() {
168155
const transactionsListWithDuration =
169156
transactionsList?.map(transaction => ({
170157
...transaction,
171-
'avg(span.duration)': useEap
172-
? transactionDurationsMap[transaction.transaction]?.['avg(span.duration)']!
173-
: transactionDurationsMap[transaction.transaction]?.[
174-
'avg(transaction.duration)'
175-
]!,
158+
'avg(span.duration)':
159+
transactionDurationsMap[transaction.transaction]?.['avg(span.duration)']!,
176160
})) || [];
177161

178162
const meta = combineMeta(transactionsListMeta, transactionDurationMeta);

0 commit comments

Comments
 (0)