From 7beab6eddc0123052fae67facae065f97e9d848a Mon Sep 17 00:00:00 2001 From: congqixia Date: Fri, 11 Jun 2021 17:53:54 +0800 Subject: [PATCH] Fix new miniokv retry logic (#5749) Signed-off-by: Congqi Xia --- internal/kv/minio/minio_kv.go | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/internal/kv/minio/minio_kv.go b/internal/kv/minio/minio_kv.go index b45f4488e2..613dd62ca8 100644 --- a/internal/kv/minio/minio_kv.go +++ b/internal/kv/minio/minio_kv.go @@ -47,28 +47,26 @@ type Option struct { func NewMinIOKV(ctx context.Context, option *Option) (*MinIOKV, error) { var minIOClient *minio.Client - connectMinIOFn := func() error { - var err error - minIOClient, err = minio.New(option.Address, &minio.Options{ - Creds: credentials.NewStaticV4(option.AccessKeyID, option.SecretAccessKeyID, ""), - Secure: option.UseSSL, - }) - if err != nil { - return err - } - return nil - } - - err := retry.Retry(100000, time.Millisecond*200, connectMinIOFn) + var err error + minIOClient, err = minio.New(option.Address, &minio.Options{ + Creds: credentials.NewStaticV4(option.AccessKeyID, option.SecretAccessKeyID, ""), + Secure: option.UseSSL, + }) + // options nil or invalid formatted endpoint, don't need retry if err != nil { return nil, err } - - bucketExists, err := minIOClient.BucketExists(ctx, option.BucketName) + var bucketExists bool + // check valid in first query + checkBucketFn := func() error { + bucketExists, err = minIOClient.BucketExists(ctx, option.BucketName) + return err + } + err = retry.Retry(100000, time.Millisecond*200, checkBucketFn) if err != nil { return nil, err } - + // connection shall be valid here, no need to retry if option.CreateBucket { if !bucketExists { err = minIOClient.MakeBucket(ctx, option.BucketName, minio.MakeBucketOptions{})