From 58f3c1b8380fc6d11e192e34944b64e6e3b7a1be Mon Sep 17 00:00:00 2001 From: Sean Li Date: Mon, 21 Oct 2024 14:15:40 -0700 Subject: [PATCH] trying to surface errors Signed-off-by: Sean Li --- src/plugins/data/common/utils/helpers.ts | 13 +++++++++++-- .../language_service/lib/query_result.tsx | 17 ++++++++--------- .../view_components/utils/use_search.ts | 6 +++--- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/plugins/data/common/utils/helpers.ts b/src/plugins/data/common/utils/helpers.ts index 2d1ab2ab1417..2f6b8fa4464d 100644 --- a/src/plugins/data/common/utils/helpers.ts +++ b/src/plugins/data/common/utils/helpers.ts @@ -29,7 +29,12 @@ */ import { i18n } from '@osd/i18n'; -import { PollQueryResultsHandler, FetchStatusResponse } from '../data_frames'; +import { + PollQueryResultsHandler, + FetchStatusResponse, + IDataFrameResponse, + DATA_FRAME_TYPES, +} from '../data_frames'; export interface QueryStatusOptions { pollQueryResults: PollQueryResultsHandler; @@ -53,11 +58,15 @@ export const handleQueryResults = async ( } while (queryStatus !== 'SUCCESS' && queryStatus !== 'FAILED'); if (queryStatus === 'FAILED') { - throw new Error( + const error = Error( i18n.translate('data.search.request.failed', { defaultMessage: 'An error occurred while executing the search query', }) ); + return { + status: 'failed', + body: { error }, + } as FetchStatusResponse; } return queryResultsRes; diff --git a/src/plugins/data/public/query/query_string/language_service/lib/query_result.tsx b/src/plugins/data/public/query/query_string/language_service/lib/query_result.tsx index 7174a9eae830..1261a8641d06 100644 --- a/src/plugins/data/public/query/query_string/language_service/lib/query_result.tsx +++ b/src/plugins/data/public/query/query_string/language_service/lib/query_result.tsx @@ -23,10 +23,9 @@ export interface QueryStatus { status: ResultStatus; body?: { error?: { - reason?: string; - details: string; + statusCode?: number; + message?: string; }; - statusCode?: number; }; elapsedMs?: number; startTime?: number; @@ -154,20 +153,20 @@ export function QueryResult(props: { queryStatus: QueryStatus }) {
- {i18n.translate('data.query.languageService.queryResults.reasons', { - defaultMessage: `Reasons:`, + {i18n.translate('data.query.languageService.queryResults.status', { + defaultMessage: `Status:`, })} {' '} - {props.queryStatus.body.error.reason} + {props.queryStatus.body.error?.statusCode}

- {i18n.translate('data.query.languageService.queryResults.details', { - defaultMessage: `Details:`, + {i18n.translate('data.query.languageService.queryResults.message', { + defaultMessage: `Message:`, })} {' '} - {props.queryStatus.body.error.details} + {props.queryStatus.body.error.message}

diff --git a/src/plugins/discover/public/application/view_components/utils/use_search.ts b/src/plugins/discover/public/application/view_components/utils/use_search.ts index ee75169abe18..2c7b4c76fd82 100644 --- a/src/plugins/discover/public/application/view_components/utils/use_search.ts +++ b/src/plugins/discover/public/application/view_components/utils/use_search.ts @@ -276,15 +276,15 @@ export const useSearch = (services: DiscoverViewServices) => { } let errorBody; try { - errorBody = JSON.parse(error.body.message); + errorBody = JSON.parse(error.body); } catch (e) { - errorBody = error.body.message; + errorBody = error.body; } data$.next({ status: ResultStatus.ERROR, queryStatus: { - body: errorBody, + body: { error: errorBody }, elapsedMs, }, });