Skip to content

Commit 5e17308

Browse files
committed
refactor: modularize error handling for context-related errors
1 parent f291920 commit 5e17308

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

internal/storage/postgres/utils/common.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package utils
22

33
import (
4+
"context"
45
"fmt"
56
"log/slog"
67

@@ -124,9 +125,22 @@ func HandleError(span trace.Span, err error, errorCode base.ErrorCode) error {
124125
// Set the status of the span
125126
span.SetStatus(codes.Error, err.Error())
126127

127-
// Log the error
128-
slog.Error("Error encountered", slog.Any("error", err), slog.Any("errorCode", errorCode))
128+
// Check if the error is context-related
129+
if IsContextRelatedError(err) {
130+
// Use debug level logging for context-related errors
131+
slog.Debug("Context-related error encountered", slog.Any("error", err), slog.Any("errorCode", errorCode))
132+
} else {
133+
// Use error level logging for all other errors
134+
slog.Error("Error encountered", slog.Any("error", err), slog.Any("errorCode", errorCode))
135+
}
129136

130137
// Return a new standardized error with the provided error code
131138
return errors.New(errorCode.String())
132139
}
140+
141+
// IsContextRelatedError checks if the error is due to context cancellation, deadline exceedance, or closed connection
142+
func IsContextRelatedError(err error) bool {
143+
return errors.Is(err, context.Canceled) ||
144+
errors.Is(err, context.DeadlineExceeded) ||
145+
err.Error() == "conn closed"
146+
}

0 commit comments

Comments
 (0)