From c8df22a2961ac9c0597f9d711bf4a195a4dcccd7 Mon Sep 17 00:00:00 2001 From: Shahab Eshaghi Date: Mon, 4 Jul 2022 17:15:29 +0430 Subject: [PATCH 1/2] do not log on lock --- redis/shared.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/redis/shared.go b/redis/shared.go index f94eed6..9c5274b 100644 --- a/redis/shared.go +++ b/redis/shared.go @@ -41,8 +41,7 @@ func Fetch[K any](ctx context.Context, client redis.Cmdable, key string, t, retr waitKey := fmt.Sprintf("%s:wait", key) cmd := client.SetNX(ctx, waitKey, true, retryT) if val, err := cmd.Result(); err != nil || val == false { - logrus.Infof("goxy:SharedFetch:%s-lock:%v", key, err) - return err + return fmt.Errorf("goxy:SharedFetch:%s-lock:already locked", key) } var res K var err error From e60cfbe6233d03f0645da7f400dcd49554e2e8bb Mon Sep 17 00:00:00 2001 From: Shahab Eshaghi Date: Tue, 5 Jul 2022 10:47:21 +0430 Subject: [PATCH 2/2] improve errors --- redis/shared.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/redis/shared.go b/redis/shared.go index 9c5274b..3fd4073 100644 --- a/redis/shared.go +++ b/redis/shared.go @@ -40,11 +40,16 @@ func SharedFetch[K any](ctx context.Context, client redis.Cmdable, key string, t func Fetch[K any](ctx context.Context, client redis.Cmdable, key string, t, retryT time.Duration, retry int, f func(ctx context.Context) (K, error)) error { waitKey := fmt.Sprintf("%s:wait", key) cmd := client.SetNX(ctx, waitKey, true, retryT) - if val, err := cmd.Result(); err != nil || val == false { - return fmt.Errorf("goxy:SharedFetch:%s-lock:already locked", key) + val, err := cmd.Result() + if err != nil { + err = fmt.Errorf("goxy:SharedFetch:%s-lock:can't fetch lock: %v", key, err) + logrus.Error(err) + return err + } + if val == false { + return fmt.Errorf("goxy:SharedFetch:%s-lock: locked", key) } var res K - var err error for i := 0; i < retry; i++ { res, err = f(ctx) if err == nil {