Skip to content

Commit 3a6d9c9

Browse files
authored
Merge pull request #1160 from traPtitech/fix/log-interceptor
fix: treat context.Canceled error as connect.CodeCanceled in the log interceptor
2 parents 6fa2627 + 2c01e00 commit 3a6d9c9

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

‎pkg/infrastructure/grpc/log_interceptor.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"connectrpc.com/connect"
10+
"github.com/friendsofgo/errors"
1011
"github.com/traPtitech/neoshowcase/pkg/domain"
1112
"github.com/traPtitech/neoshowcase/pkg/domain/web"
1213
"github.com/traPtitech/neoshowcase/pkg/util/slogutil"
@@ -37,12 +38,17 @@ func (l *LogInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc {
3738
start := time.Now()
3839
response, err := next(ctx, request)
3940
elapsed := fmt.Sprintf("%.3fs", time.Since(start).Seconds())
41+
4042
if err == nil || connect.IsNotModifiedError(err) {
4143
slog.InfoContext(ctx, "unary request succeeded",
4244
"procedure", request.Spec().Procedure,
4345
"duration_sec", elapsed,
4446
)
4547
} else {
48+
// treat context.Canceled error as connect.CodeCanceled
49+
if errors.Is(err, context.Canceled) {
50+
err = connect.NewError(connect.CodeCanceled, err)
51+
}
4652
switch connect.CodeOf(err) {
4753
case connect.CodeUnknown, connect.CodeInternal, connect.CodeUnavailable, connect.CodeDeadlineExceeded, connect.CodeUnimplemented, connect.CodeDataLoss:
4854
slog.ErrorContext(ctx, "unary request failed with server error",

0 commit comments

Comments
 (0)