Log reason for 404 in field existence check (#81315)

This commit is contained in:
Joe Reuter 2020-10-27 11:43:42 +01:00 committed by GitHub
parent 1712f0d441
commit 2dcfe2a99f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 11 deletions

View file

@ -29,13 +29,13 @@ export class LensServerPlugin implements Plugin<{}, {}, {}, {}> {
private readonly kibanaIndexConfig: Observable<{ kibana: { index: string } }>; private readonly kibanaIndexConfig: Observable<{ kibana: { index: string } }>;
private readonly telemetryLogger: Logger; private readonly telemetryLogger: Logger;
constructor(initializerContext: PluginInitializerContext) { constructor(private initializerContext: PluginInitializerContext) {
this.kibanaIndexConfig = initializerContext.config.legacy.globalConfig$; this.kibanaIndexConfig = initializerContext.config.legacy.globalConfig$;
this.telemetryLogger = initializerContext.logger.get('usage'); this.telemetryLogger = initializerContext.logger.get('usage');
} }
setup(core: CoreSetup<PluginStartContract>, plugins: PluginSetupContract) { setup(core: CoreSetup<PluginStartContract>, plugins: PluginSetupContract) {
setupSavedObjects(core); setupSavedObjects(core);
setupRoutes(core); setupRoutes(core, this.initializerContext.logger.get());
if (plugins.usageCollection && plugins.taskManager) { if (plugins.usageCollection && plugins.taskManager) {
registerLensUsageCollector( registerLensUsageCollector(
plugins.usageCollection, plugins.usageCollection,

View file

@ -7,10 +7,14 @@
import Boom from 'boom'; import Boom from 'boom';
import { schema } from '@kbn/config-schema'; import { schema } from '@kbn/config-schema';
import { ILegacyScopedClusterClient, SavedObject, RequestHandlerContext } from 'src/core/server'; import { ILegacyScopedClusterClient, SavedObject, RequestHandlerContext } from 'src/core/server';
import { CoreSetup } from 'src/core/server'; import { CoreSetup, Logger } from 'src/core/server';
import { BASE_API_URL } from '../../common'; import { BASE_API_URL } from '../../common';
import { IndexPatternAttributes, UI_SETTINGS } from '../../../../../src/plugins/data/server'; import { IndexPatternAttributes, UI_SETTINGS } from '../../../../../src/plugins/data/server';
export function isBoomError(error: { isBoom?: boolean }): error is Boom {
return error.isBoom === true;
}
/** /**
* The number of docs to sample to determine field empty status. * The number of docs to sample to determine field empty status.
*/ */
@ -24,7 +28,7 @@ export interface Field {
script?: string; script?: string;
} }
export async function existingFieldsRoute(setup: CoreSetup) { export async function existingFieldsRoute(setup: CoreSetup, logger: Logger) {
const router = setup.http.createRouter(); const router = setup.http.createRouter();
router.post( router.post(
@ -52,14 +56,17 @@ export async function existingFieldsRoute(setup: CoreSetup) {
}), }),
}); });
} catch (e) { } catch (e) {
logger.info(
`Field existence check failed: ${isBoomError(e) ? e.output.payload.message : e.message}`
);
if (e.status === 404) { if (e.status === 404) {
return res.notFound(); return res.notFound({ body: e.message });
} }
if (e.isBoom) { if (isBoomError(e)) {
if (e.output.statusCode === 404) { if (e.output.statusCode === 404) {
return res.notFound(); return res.notFound({ body: e.output.payload.message });
} }
return res.internalError(e.output.message); return res.internalError({ body: e.output.payload.message });
} else { } else {
return res.internalError({ return res.internalError({
body: Boom.internal(e.message || e.name), body: Boom.internal(e.message || e.name),

View file

@ -4,13 +4,13 @@
* you may not use this file except in compliance with the Elastic License. * you may not use this file except in compliance with the Elastic License.
*/ */
import { CoreSetup } from 'src/core/server'; import { CoreSetup, Logger } from 'src/core/server';
import { existingFieldsRoute } from './existing_fields'; import { existingFieldsRoute } from './existing_fields';
import { initFieldsRoute } from './field_stats'; import { initFieldsRoute } from './field_stats';
import { initLensUsageRoute } from './telemetry'; import { initLensUsageRoute } from './telemetry';
export function setupRoutes(setup: CoreSetup) { export function setupRoutes(setup: CoreSetup, logger: Logger) {
existingFieldsRoute(setup); existingFieldsRoute(setup, logger);
initFieldsRoute(setup); initFieldsRoute(setup);
initLensUsageRoute(setup); initLensUsageRoute(setup);
} }