44 * you may not use this file except in compliance with the Elastic License.
55 */
66import { uniq , take , sortBy } from 'lodash' ;
7+ import Boom from 'boom' ;
78import { ProcessorEvent } from '../../../common/processor_event' ;
89import { Setup , SetupTimeRange } from '../helpers/setup_request' ;
910import { rangeFilter } from '../../../common/utils/range_filter' ;
@@ -15,6 +16,7 @@ import {
1516 SPAN_DESTINATION_SERVICE_RESOURCE ,
1617} from '../../../common/elasticsearch_fieldnames' ;
1718import { getEnvironmentUiFilterES } from '../helpers/convert_ui_filters/get_environment_ui_filter_es' ;
19+ import { SERVICE_MAP_TIMEOUT_ERROR } from '../../../common/service_map' ;
1820
1921const MAX_TRACES_TO_INSPECT = 1000 ;
2022
@@ -122,26 +124,30 @@ export async function getTraceSampleIds({
122124 } ,
123125 } ;
124126
125- const tracesSampleResponse = await apmEventClient . search ( params ) ;
127+ try {
128+ const tracesSampleResponse = await apmEventClient . search ( params ) ;
129+ // make sure at least one trace per composite/connection bucket
130+ // is queried
131+ const traceIdsWithPriority =
132+ tracesSampleResponse . aggregations ?. connections . buckets . flatMap ( ( bucket ) =>
133+ bucket . sample . trace_ids . buckets . map ( ( sampleDocBucket , index ) => ( {
134+ traceId : sampleDocBucket . key as string ,
135+ priority : index ,
136+ } ) )
137+ ) || [ ] ;
126138
127- // make sure at least one trace per composite/connection bucket
128- // is queried
129- const traceIdsWithPriority =
130- tracesSampleResponse . aggregations ?. connections . buckets . flatMap ( ( bucket ) =>
131- bucket . sample . trace_ids . buckets . map ( ( sampleDocBucket , index ) => ( {
132- traceId : sampleDocBucket . key as string ,
133- priority : index ,
134- } ) )
135- ) || [ ] ;
139+ const traceIds = take (
140+ uniq (
141+ sortBy ( traceIdsWithPriority , 'priority' ) . map ( ( { traceId } ) => traceId )
142+ ) ,
143+ MAX_TRACES_TO_INSPECT
144+ ) ;
136145
137- const traceIds = take (
138- uniq (
139- sortBy ( traceIdsWithPriority , 'priority' ) . map ( ( { traceId } ) => traceId )
140- ) ,
141- MAX_TRACES_TO_INSPECT
142- ) ;
143-
144- return {
145- traceIds,
146- } ;
146+ return { traceIds } ;
147+ } catch ( error ) {
148+ if ( 'displayName' in error && error . displayName === 'RequestTimeout' ) {
149+ throw Boom . internal ( SERVICE_MAP_TIMEOUT_ERROR ) ;
150+ }
151+ throw error ;
152+ }
147153}
0 commit comments