diff --git a/.changeset/wicked-roses-appear.md b/.changeset/wicked-roses-appear.md new file mode 100644 index 0000000000..26a9860084 --- /dev/null +++ b/.changeset/wicked-roses-appear.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Re throw error in instrumentation after reporting it diff --git a/packages/medusa/src/instrumentation/index.ts b/packages/medusa/src/instrumentation/index.ts index 3a5344f16b..0a018cdf94 100644 --- a/packages/medusa/src/instrumentation/index.ts +++ b/packages/medusa/src/instrumentation/index.ts @@ -148,14 +148,17 @@ export function instrumentRemoteQuery() { span.setAttributes({ "query.fields": queryOptions.fields, }) - return await queryFn() - .catch((error) => { - span.setStatus({ - code: SpanStatusCode.ERROR, - message: error.message, - }) + try { + return await queryFn() + } catch (err) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, }) - .finally(() => span.end()) + throw err + } finally { + span.end() + } } ) }) @@ -176,14 +179,18 @@ export function instrumentRemoteQuery() { span.setAttributes({ "query.fields": "fields" in queryOptions ? queryOptions.fields : [], }) - return await queryFn() - .catch((error) => { - span.setStatus({ - code: SpanStatusCode.ERROR, - message: error.message, - }) + + try { + return await queryFn() + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error.message, }) - .finally(() => span.end()) + throw error + } finally { + span.end() + } } ) }) @@ -201,14 +208,18 @@ export function instrumentRemoteQuery() { "fetch.select": options.select, "fetch.relations": options.relations, }) - return await fetchFn() - .catch((error) => { - span.setStatus({ - code: SpanStatusCode.ERROR, - message: error.message, - }) + + try { + return await fetchFn() + } catch (error) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error.message, }) - .finally(() => span.end()) + throw error + } finally { + span.end() + } } ) }) @@ -251,6 +262,7 @@ export function instrumentWorkflows() { span.setAttribute(`workflow.step.${key}`, value) }) + // TODO: should we report error and re throw it? return await stepHandler().finally(() => span.end()) } )