Skip to content

Commit cd52dd9

Browse files
committed
Update autocomplete to use settings from config rather than advanced settings
1 parent 07c22f1 commit cd52dd9

File tree

7 files changed

+31
-14
lines changed

7 files changed

+31
-14
lines changed

src/core/server/mocks.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ import { uuidServiceMock } from './uuid/uuid_service.mock';
4444

4545
export function pluginInitializerContextConfigMock<T>(config: T) {
4646
const globalConfig: SharedGlobalConfig = {
47-
kibana: { index: '.kibana-tests' },
47+
kibana: {
48+
index: '.kibana-tests',
49+
autocompleteTerminateAfter: duration(100000),
50+
autocompleteTimeout: duration(1000),
51+
},
4852
elasticsearch: {
4953
shardTimeout: duration('30s'),
5054
requestTimeout: duration('30s'),

src/core/server/plugins/plugin_context.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ describe('Plugin Context', () => {
7575
.pipe(first())
7676
.toPromise();
7777
expect(configObject).toStrictEqual({
78-
kibana: { index: '.kibana' },
78+
kibana: {
79+
index: '.kibana',
80+
autocompleteTerminateAfter: duration(100000),
81+
autocompleteTimeout: duration(1000),
82+
},
7983
elasticsearch: {
8084
shardTimeout: duration(30, 's'),
8185
requestTimeout: duration(30, 's'),

src/core/server/plugins/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ export interface Plugin<
214214

215215
export const SharedGlobalConfigKeys = {
216216
// We can add more if really needed
217-
kibana: ['index'] as const,
217+
kibana: ['index', 'autocompleteTerminateAfter', 'autocompleteTimeout'] as const,
218218
elasticsearch: ['shardTimeout', 'requestTimeout', 'pingTimeout', 'startupTimeout'] as const,
219219
path: ['data'] as const,
220220
};

src/plugins/data/server/autocomplete/autocomplete_service.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
* under the License.
1818
*/
1919

20-
import { CoreSetup, Plugin } from 'kibana/server';
20+
import { CoreSetup, Plugin, PluginInitializerContext } from 'kibana/server';
2121
import { registerRoutes } from './routes';
2222

2323
export class AutocompleteService implements Plugin<void> {
24+
constructor(private initializerContext: PluginInitializerContext) {}
25+
2426
public setup(core: CoreSetup) {
25-
registerRoutes(core);
27+
registerRoutes(core, this.initializerContext.config.legacy.globalConfig$);
2628
}
2729

2830
public start() {}

src/plugins/data/server/autocomplete/routes.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
* under the License.
1818
*/
1919

20-
import { CoreSetup } from 'kibana/server';
20+
import { Observable } from 'rxjs';
21+
import { CoreSetup, SharedGlobalConfig } from 'kibana/server';
2122
import { registerValueSuggestionsRoute } from './value_suggestions_route';
2223

23-
export function registerRoutes({ http }: CoreSetup): void {
24+
export function registerRoutes({ http }: CoreSetup, config$: Observable<SharedGlobalConfig>): void {
2425
const router = http.createRouter();
2526

26-
registerValueSuggestionsRoute(router);
27+
registerValueSuggestionsRoute(router, config$);
2728
}

src/plugins/data/server/autocomplete/value_suggestions_route.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@
1919

2020
import { get, map } from 'lodash';
2121
import { schema } from '@kbn/config-schema';
22-
import { IRouter } from 'kibana/server';
22+
import { IRouter, SharedGlobalConfig } from 'kibana/server';
2323

24+
import { Observable } from 'rxjs';
25+
import { first } from 'rxjs/operators';
2426
import { IFieldType, Filter } from '../index';
2527
import { findIndexPatternById, getFieldByName } from '../index_patterns';
2628
import { getRequestAbortedSignal } from '../lib';
2729

28-
export function registerValueSuggestionsRoute(router: IRouter) {
30+
export function registerValueSuggestionsRoute(
31+
router: IRouter,
32+
config$: Observable<SharedGlobalConfig>
33+
) {
2934
router.post(
3035
{
3136
path: '/api/kibana/suggestions/values/{index}',
@@ -47,15 +52,15 @@ export function registerValueSuggestionsRoute(router: IRouter) {
4752
},
4853
},
4954
async (context, request, response) => {
50-
const { client: uiSettings } = context.core.uiSettings;
55+
const config = await config$.pipe(first()).toPromise();
5156
const { field: fieldName, query, boolFilter } = request.body;
5257
const { index } = request.params;
5358
const { dataClient } = context.core.elasticsearch;
5459
const signal = getRequestAbortedSignal(request.events.aborted$);
5560

5661
const autocompleteSearchOptions = {
57-
timeout: await uiSettings.get<number>('kibana.autocompleteTimeout'),
58-
terminate_after: await uiSettings.get<number>('kibana.autocompleteTerminateAfter'),
62+
timeout: `${config.kibana.autocompleteTimeout.asMilliseconds()}ms`,
63+
terminate_after: config.kibana.autocompleteTerminateAfter.asMilliseconds(),
5964
};
6065

6166
const indexPattern = await findIndexPatternById(context.core.savedObjects.client, index);

src/plugins/data/server/plugin.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@ export class DataServerPlugin implements Plugin<DataPluginSetup, DataPluginStart
4444
private readonly searchService: SearchService;
4545
private readonly scriptsService: ScriptsService;
4646
private readonly kqlTelemetryService: KqlTelemetryService;
47-
private readonly autocompleteService = new AutocompleteService();
47+
private readonly autocompleteService: AutocompleteService;
4848
private readonly indexPatterns = new IndexPatternsService();
4949
private readonly fieldFormats = new FieldFormatsService();
5050

5151
constructor(initializerContext: PluginInitializerContext) {
5252
this.searchService = new SearchService(initializerContext);
5353
this.scriptsService = new ScriptsService();
5454
this.kqlTelemetryService = new KqlTelemetryService(initializerContext);
55+
this.autocompleteService = new AutocompleteService(initializerContext);
5556
}
5657

5758
public setup(core: CoreSetup, { usageCollection }: DataPluginSetupDependencies) {

0 commit comments

Comments
 (0)