From 23ebf2687f8163c3f3d5987bf026b6bbedb5e091 Mon Sep 17 00:00:00 2001 From: Alex Holovach Date: Fri, 3 Oct 2025 10:48:21 -0500 Subject: [PATCH] improve error handling --- packages/otel-better-auth/src/index.ts | 30 +++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/otel-better-auth/src/index.ts b/packages/otel-better-auth/src/index.ts index 1a7b8cb..e54eff1 100644 --- a/packages/otel-better-auth/src/index.ts +++ b/packages/otel-better-auth/src/index.ts @@ -56,19 +56,23 @@ type AuthWithOptions< }; /** - * Finalizes a span with status, timing, and optional error. + * Ends a span with an error status and exception recording. */ -function finalizeSpan(span: Span, error?: unknown): void { - if (error) { - if (error instanceof Error) { - span.recordException(error); - } else { - span.recordException(new Error(String(error))); - } - span.setStatus({ code: SpanStatusCode.ERROR }); +function endSpanWithError(span: Span, error: unknown): void { + if (error instanceof Error) { + span.recordException(error); } else { - span.setStatus({ code: SpanStatusCode.OK }); + span.recordException(new Error(String(error))); } + span.setStatus({ code: SpanStatusCode.ERROR }); + span.end(); +} + +/** + * Ends a span with a success status. + */ +function endSpanWithSuccess(span: Span): void { + span.setStatus({ code: SpanStatusCode.OK }); span.end(); } @@ -119,6 +123,8 @@ function wrapAuthMethod Promise>( result.error.message || "Unknown error", ); span.setStatus({ code: SpanStatusCode.ERROR }); + span.end(); + return result; } } else { // Handle direct response format (Better Auth API) @@ -134,11 +140,11 @@ function wrapAuthMethod Promise>( } } - finalizeSpan(span); + endSpanWithSuccess(span); return result; } catch (error) { span.setAttribute(SEMATTRS_AUTH_SUCCESS, false); - finalizeSpan(span, error); + endSpanWithError(span, error); throw error; } });