From 4e501faae1fd46faba268d2803c7c5452fcc3c60 Mon Sep 17 00:00:00 2001 From: Eugene Jahn Date: Mon, 11 Apr 2022 16:48:50 -0700 Subject: [PATCH] fix: add more descriptive errors on task/workflow run failure (#370) Signed-off-by: eugenejahn --- .../AdminEntity/transformRequestError.ts | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/models/AdminEntity/transformRequestError.ts b/src/models/AdminEntity/transformRequestError.ts index 54dc0b6fb..9df4275f3 100644 --- a/src/models/AdminEntity/transformRequestError.ts +++ b/src/models/AdminEntity/transformRequestError.ts @@ -1,9 +1,32 @@ import { AxiosError } from 'axios'; import { NotAuthorizedError, NotFoundError } from 'errors/fetchErrors'; +import { Admin } from 'flyteidl'; +import { decodeProtoResponse } from './utils'; + +// to enrich the error message by adding the response +function decodeErrorResponseMessage(error: AxiosError) { + try { + // probablly using a wrong decode type.. is there a decode type for the error message? + const decodedErrorResponseMessage = decodeProtoResponse( + error.response?.data, + Admin.RawOutputDataConfig, + ); + if (decodedErrorResponseMessage && decodedErrorResponseMessage.outputLocationPrefix) { + const errorStatusMessage = error?.message; + const errorResponseMessage = decodedErrorResponseMessage.outputLocationPrefix; + + return new Error(`${errorStatusMessage} ${errorResponseMessage}`); + } + } catch (err) { + // do nothing + } + return error; +} /** Detects special cases for errors returned from Axios and lets others pass through. */ export function transformRequestError(err: unknown, path: string) { const error = err as AxiosError; + if (!error.response) { return error; } @@ -17,5 +40,5 @@ export function transformRequestError(err: unknown, path: string) { return new NotAuthorizedError(); } - return error; + return decodeErrorResponseMessage(error); }