Skip to content

ref(insights): remove eap conditions caches/queues/database #95230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ function IndexedSpanSearchQueryBuilder({
return <SearchQueryBuilder {...searchQueryBuilderProps} />;
}

function EapSpanSearchQueryBuilderWrapper(props: SpanSearchQueryBuilderProps) {
export function EapSpanSearchQueryBuilderWrapper(props: SpanSearchQueryBuilderProps) {
const {tags: numberTags} = useTraceItemTags('number');
const {tags: stringTags} = useTraceItemTags('string');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,9 @@ import {Referrer} from 'sentry/views/insights/cache/referrers';
// TODO(release-drawer): Only used in cache/components/samplePanel
// eslint-disable-next-line no-restricted-imports
import {InsightsLineChartWidget} from 'sentry/views/insights/common/components/insightsLineChartWidget';
import type {DiscoverSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries';
import {
useEAPSeries,
useMetricsSeries,
} from 'sentry/views/insights/common/queries/useDiscoverSeries';
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
import type {SearchHook, SpanQueryFilters} from 'sentry/views/insights/types';
import {MetricsFields, SpanFields} from 'sentry/views/insights/types';
import {useEAPSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries';
import type {SpanQueryFilters} from 'sentry/views/insights/types';
import {SpanFields} from 'sentry/views/insights/types';

type Props = {
samples: Samples;
Expand All @@ -28,10 +23,19 @@ export function TransactionDurationChartWithSamples({samples}: Props) {
},
});

const {search} = useTransactionDurationSearch({transaction});
const search = MutableSearch.fromQueryObject({
transaction,
is_transaction: 'true',
} satisfies SpanQueryFilters);
const referrer = Referrer.SAMPLES_CACHE_TRANSACTION_DURATION_CHART;

const {data, isPending, error} = useTransactionDurationSeries({search});
const {data, isPending, error} = useEAPSeries(
{
search,
yAxis: [`avg(${SpanFields.SPAN_DURATION})`],
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
);

return (
<InsightsLineChartWidget
Expand All @@ -45,52 +49,3 @@ export function TransactionDurationChartWithSamples({samples}: Props) {
/>
);
}

const useTransactionDurationSearch = ({
transaction,
}: {
transaction: string;
}): SearchHook => {
const useEap = useInsightsEap();
const search = useEap
? MutableSearch.fromQueryObject({
transaction,
is_transaction: 'true',
} satisfies SpanQueryFilters)
: MutableSearch.fromQueryObject({transaction} satisfies SpanQueryFilters);

return {search};
};

const useTransactionDurationSeries = ({search}: {search: MutableSearch}) => {
const useEap = useInsightsEap();

const metricsResult = useMetricsSeries(
{
yAxis: [`avg(${MetricsFields.TRANSACTION_DURATION})`],
search,
transformAliasToInputFormat: true,
enabled: !useEap,
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION_CHART
);

const eapResult = useEAPSeries(
{
search,
yAxis: [`avg(${SpanFields.SPAN_DURATION})`],
enabled: useEap,
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
);

const result = useEap ? eapResult : metricsResult;
const finalData: {['avg(span.duration)']: DiscoverSeries} = useEap
? eapResult.data
: {
[`avg(${SpanFields.SPAN_DURATION})`]:
metricsResult.data['avg(transaction.duration)'],
};

return {...result, data: finalData};
};
73 changes: 19 additions & 54 deletions static/app/views/insights/cache/components/samplePanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import keyBy from 'lodash/keyBy';
import {Button} from 'sentry/components/core/button';
import {CompactSelect} from 'sentry/components/core/compactSelect';
import {EventDrawerHeader} from 'sentry/components/events/eventDrawer';
import {SpanSearchQueryBuilder} from 'sentry/components/performance/spanSearchQueryBuilder';
import {EapSpanSearchQueryBuilderWrapper} from 'sentry/components/performance/spanSearchQueryBuilder';
import {t} from 'sentry/locale';
import {trackAnalytics} from 'sentry/utils/analytics';
import {DurationUnit, RateUnit, SizeUnit} from 'sentry/utils/discover/fields';
Expand Down Expand Up @@ -32,18 +32,15 @@ import {SampleDrawerHeaderTransaction} from 'sentry/views/insights/common/compon
import {
useDiscoverOrEap,
useEAPSpans,
useMetrics,
useSpanMetrics,
useSpansIndexed,
} from 'sentry/views/insights/common/queries/useDiscover';
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
import {
DataTitles,
getThroughputTitle,
} from 'sentry/views/insights/common/views/spans/types';
import {InsightsSpanTagProvider} from 'sentry/views/insights/pages/insightsSpanTagProvider';
import type {
MetricsQueryFilters,
SpanIndexedQueryFilters,
SpanIndexedResponse,
SpanMetricsQueryFilters,
Expand All @@ -64,7 +61,6 @@ export function CacheSamplePanel() {
const location = useLocation();
const organization = useOrganization();
const {selection} = usePageFilters();
const useEap = useInsightsEap();

const query = useLocationQuery({
fields: {
Expand Down Expand Up @@ -119,18 +115,23 @@ export function CacheSamplePanel() {
);

const {data: transactionDurationData, isPending: isTransactionDurationLoading} =
useTransactionDuration({transaction: query.transaction});
useEAPSpans(
{
search: MutableSearch.fromQueryObject({
transaction: query.transaction,
is_transaction: 'true',
} satisfies SpanQueryFilters),
fields: [`avg(${SpanFields.SPAN_DURATION})`],
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
);

const sampleFilters: SpanIndexedQueryFilters = {
...BASE_FILTERS,
transaction: query.transaction,
project_id: query.project,
};

const transactionIdField = useEap
? SpanIndexedField.TRANSACTION_SPAN_ID
: SpanIndexedField.TRANSACTION_ID;

const useIndexedCacheSpans = (
isCacheHit: SpanIndexedResponse['cache.hit'],
limit: number
Expand All @@ -153,7 +154,6 @@ export function CacheSamplePanel() {
SpanIndexedField.SPAN_OP,
SpanIndexedField.CACHE_ITEM_SIZE,
SpanIndexedField.TRACE,
...(useEap ? [] : ([SpanIndexedField.TRANSACTION_ID] as const)),
],
sorts: [SPAN_SAMPLES_SORT],
limit,
Expand Down Expand Up @@ -189,11 +189,10 @@ export function CacheSamplePanel() {
return [...(cacheHitSamples || []), ...(cacheMissSamples || [])];
}, [cacheHitSamples, cacheMissSamples]);

const transactionIds = cacheSamples?.map(span => span[transactionIdField]) || [];
const transactionIds =
cacheSamples?.map(span => span[SpanIndexedField.TRANSACTION_SPAN_ID]) || [];
const traceIds = cacheSamples?.map(span => span.trace) || [];
const transactionDurationSearch = useEap
? `${SpanIndexedField.TRANSACTION_SPAN_ID}:[${transactionIds.join(',')}] trace:[${traceIds.join(',')}] is_transaction:true`
: `id:[${transactionIds.join(',')}]`;
const transactionDurationSearch = `${SpanIndexedField.TRANSACTION_SPAN_ID}:[${transactionIds.join(',')}] trace:[${traceIds.join(',')}] is_transaction:true`;

const {
data: transactionData,
Expand All @@ -213,9 +212,11 @@ export function CacheSamplePanel() {
return cacheSamples.map(span => ({
...span,
'transaction.duration':
transactionDurationsMap[span[transactionIdField]]?.['span.duration']!,
transactionDurationsMap[span[SpanIndexedField.TRANSACTION_SPAN_ID]]?.[
'span.duration'
]!,
}));
}, [cacheSamples, transactionData, transactionIdField]);
}, [cacheSamples, transactionData]);

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

<ModuleLayout.Full>
<SpanSearchQueryBuilder
<EapSpanSearchQueryBuilderWrapper
searchSource={`${ModuleName.CACHE}-sample-panel`}
initialQuery={query.spanSearchQuery}
onSearch={handleSearch}
placeholder={t('Search for span attributes')}
projects={selection.projects}
useEap={useEap}
/>
</ModuleLayout.Full>

Expand Down Expand Up @@ -432,38 +432,3 @@ const CACHE_STATUS_OPTIONS = [
label: t('Miss'),
},
];

const useTransactionDuration = ({transaction}: {transaction: string}) => {
const useEap = useInsightsEap();

const metricsResult = useMetrics(
{
enabled: !useEap && Boolean(transaction),
search: MutableSearch.fromQueryObject({
transaction,
} satisfies MetricsQueryFilters),
fields: [`avg(${MetricsFields.TRANSACTION_DURATION})`],
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
);

const eapResult = useEAPSpans(
{
search: MutableSearch.fromQueryObject({
transaction,
is_transaction: 'true',
} satisfies SpanQueryFilters),
fields: [`avg(${SpanFields.SPAN_DURATION})`],
},
Referrer.SAMPLES_CACHE_TRANSACTION_DURATION
);

const result = useEap ? eapResult : metricsResult;
const finalData: Array<{[`avg(span.duration)`]: number}> = useEap
? eapResult.data
: metricsResult.data.map(row => ({
'avg(span.duration)': row[`avg(${MetricsFields.TRANSACTION_DURATION})`],
}));

return {...result, data: finalData};
};
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,11 @@ describe('CacheLandingPage', function () {
query: {
dataset: 'metrics',
environment: [],
field: ['avg(transaction.duration)', 'transaction'],
field: ['avg(span.duration)', 'transaction'],
per_page: 50,
noPagination: true,
project: [],
query: 'transaction:["my-transaction"]',
query: 'transaction:["my-transaction"] AND is_transaction:true',
referrer: 'api.performance.cache.landing-cache-transaction-duration',
statsPeriod: '10d',
},
Expand Down Expand Up @@ -206,11 +206,11 @@ describe('CacheLandingPage', function () {
query: {
dataset: 'metrics',
environment: [],
field: ['avg(transaction.duration)', 'transaction'],
field: ['avg(span.duration)', 'transaction'],
noPagination: true,
per_page: 50,
project: [],
query: 'transaction:["transaction with \\"quote\\""]',
query: 'transaction:["transaction with \\"quote\\""] AND is_transaction:true',
referrer: 'api.performance.cache.landing-cache-transaction-duration',
statsPeriod: '10d',
},
Expand Down Expand Up @@ -407,13 +407,13 @@ const setRequestMocks = (organization: Organization) => {
data: [
{
transaction: 'my-transaction',
'avg(transaction.duration)': 456,
'avg(span.duration)': 456,
},
],
meta: {
fields: {
transaction: 'string',
'avg(transaction.duration)': 'duration',
'avg(span.duration)': 'duration',
},
units: {},
},
Expand Down
26 changes: 5 additions & 21 deletions static/app/views/insights/cache/views/cacheLandingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,10 @@ import {useSpanMetricsSeries} from 'sentry/views/insights/common/queries/useDisc
import {useHasFirstSpan} from 'sentry/views/insights/common/queries/useHasFirstSpan';
import {useOnboardingProject} from 'sentry/views/insights/common/queries/useOnboardingProject';
import {combineMeta} from 'sentry/views/insights/common/utils/combineMeta';
import {useInsightsEap} from 'sentry/views/insights/common/utils/useEap';
import {useSamplesDrawer} from 'sentry/views/insights/common/utils/useSamplesDrawer';
import {QueryParameterNames} from 'sentry/views/insights/common/views/queryParameters';
import {BackendHeader} from 'sentry/views/insights/pages/backend/backendPageHeader';
import {
type MetricsProperty,
ModuleName,
SpanFunction,
SpanMetricsField,
} from 'sentry/views/insights/types';
import {ModuleName, SpanFunction, SpanMetricsField} from 'sentry/views/insights/types';

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

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

Expand Down Expand Up @@ -113,13 +106,7 @@ export function CacheLandingPage() {
Referrer.LANDING_CACHE_TRANSACTION_LIST
);

const search = useEap
? `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}] AND is_transaction:true`
: `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}]`;

const fields: MetricsProperty[] = useEap
? ['avg(span.duration)', 'transaction']
: [`avg(transaction.duration)`, 'transaction'];
const search = `transaction:[${transactionsList.map(({transaction}) => `"${transaction.replaceAll('"', '\\"')}"`).join(',')}] AND is_transaction:true`;

const {
data: transactionDurationData,
Expand All @@ -129,7 +116,7 @@ export function CacheLandingPage() {
} = useMetrics(
{
search,
fields,
fields: ['avg(span.duration)', 'transaction'],
enabled: !isTransactionsListFetching && transactionsList.length > 0,
noPagination: true,
},
Expand Down Expand Up @@ -168,11 +155,8 @@ export function CacheLandingPage() {
const transactionsListWithDuration =
transactionsList?.map(transaction => ({
...transaction,
'avg(span.duration)': useEap
? transactionDurationsMap[transaction.transaction]?.['avg(span.duration)']!
: transactionDurationsMap[transaction.transaction]?.[
'avg(transaction.duration)'
]!,
'avg(span.duration)':
transactionDurationsMap[transaction.transaction]?.['avg(span.duration)']!,
})) || [];

const meta = combineMeta(transactionsListMeta, transactionDurationMeta);
Expand Down
Loading
Loading