diff --git a/src/plugins/data/server/autocomplete/value_suggestions_route.ts b/src/plugins/data/server/autocomplete/value_suggestions_route.ts index 3f59dec83ef7f..8e6d3afa18ed5 100644 --- a/src/plugins/data/server/autocomplete/value_suggestions_route.ts +++ b/src/plugins/data/server/autocomplete/value_suggestions_route.ts @@ -46,6 +46,10 @@ export function registerValueSuggestionsRoute( const { index } = request.params; const signal = getRequestAbortedSignal(request.events.aborted$); + if (!context.indexPatterns) { + return response.badRequest(); + } + const autocompleteSearchOptions = { timeout: `${config.kibana.autocompleteTimeout.asMilliseconds()}ms`, terminate_after: config.kibana.autocompleteTerminateAfter.asMilliseconds(), diff --git a/src/plugins/data/server/index_patterns/index_patterns_service.ts b/src/plugins/data/server/index_patterns/index_patterns_service.ts index d23d0d52624bb..b489c29bc3b70 100644 --- a/src/plugins/data/server/index_patterns/index_patterns_service.ts +++ b/src/plugins/data/server/index_patterns/index_patterns_service.ts @@ -36,6 +36,7 @@ export interface IndexPatternsServiceStart { export interface IndexPatternsServiceSetupDeps { expressions: ExpressionsServerSetup; + logger: Logger; } export interface IndexPatternsServiceStartDeps { @@ -46,7 +47,7 @@ export interface IndexPatternsServiceStartDeps { export class IndexPatternsServiceProvider implements Plugin { public setup( core: CoreSetup, - { expressions }: IndexPatternsServiceSetupDeps + { logger, expressions }: IndexPatternsServiceSetupDeps ) { core.savedObjects.registerType(indexPatternSavedObjectType); core.capabilities.registerProvider(capabilitiesProvider); @@ -55,10 +56,15 @@ export class IndexPatternsServiceProvider implements Plugin { const [coreStart, , dataStart] = await core.getStartServices(); - return await dataStart.indexPatterns.indexPatternsServiceFactory( - coreStart.savedObjects.getScopedClient(request), - coreStart.elasticsearch.client.asScoped(request).asCurrentUser - ); + try { + return await dataStart.indexPatterns.indexPatternsServiceFactory( + coreStart.savedObjects.getScopedClient(request), + coreStart.elasticsearch.client.asScoped(request).asCurrentUser + ); + } catch (e) { + logger.error(e); + return undefined; + } } ); diff --git a/src/plugins/data/server/plugin.ts b/src/plugins/data/server/plugin.ts index a7a7663d6981c..3408c39cbb8e2 100644 --- a/src/plugins/data/server/plugin.ts +++ b/src/plugins/data/server/plugin.ts @@ -82,7 +82,10 @@ export class DataServerPlugin this.queryService.setup(core); this.autocompleteService.setup(core); this.kqlTelemetryService.setup(core, { usageCollection }); - this.indexPatterns.setup(core, { expressions }); + this.indexPatterns.setup(core, { + expressions, + logger: this.logger.get('indexPatterns'), + }); core.uiSettings.register(getUiSettings()); diff --git a/src/plugins/data/server/types.ts b/src/plugins/data/server/types.ts index e150debeecbe6..ea0fa49058d37 100644 --- a/src/plugins/data/server/types.ts +++ b/src/plugins/data/server/types.ts @@ -16,7 +16,7 @@ import { IndexPatternsHandlerContext } from './index_patterns'; */ export interface DataRequestHandlerContext extends RequestHandlerContext { search: SearchRequestHandlerContext; - indexPatterns: IndexPatternsHandlerContext; + indexPatterns?: IndexPatternsHandlerContext; } export type DataPluginRouter = IRouter;