From 7c83b52de0f5ba4f93f7c4576dc8d40d95a26227 Mon Sep 17 00:00:00 2001 From: congqixia Date: Thu, 23 Dec 2021 21:48:25 +0800 Subject: [PATCH] Add retry logic for DataCoord GC minio bucket (#14095) Signed-off-by: Congqi Xia --- internal/datacoord/server.go | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/internal/datacoord/server.go b/internal/datacoord/server.go index 7a051736b2..135e6d6190 100644 --- a/internal/datacoord/server.go +++ b/internal/datacoord/server.go @@ -340,15 +340,27 @@ func (s *Server) initGarbageCollection() error { if err != nil { return err } - has, err := cli.BucketExists(context.TODO(), Params.DataCoordCfg.MinioBucketName) - if err != nil { - return err - } - if !has { - err = cli.MakeBucket(context.TODO(), Params.DataCoordCfg.MinioBucketName, minio.MakeBucketOptions{}) + + checkBucketFn := func() error { + has, err := cli.BucketExists(context.TODO(), Params.DataCoordCfg.MinioBucketName) if err != nil { return err } + if !has { + err = cli.MakeBucket(context.TODO(), Params.DataCoordCfg.MinioBucketName, minio.MakeBucketOptions{}) + if err != nil { + return err + } + } + return nil + } + // retry times shall be two, just to prevent + // 1. bucket not exists + // 2. bucket is created by other componnent + // 3. datacoord try to create but failed with bucket already exists error + err = retry.Do(s.ctx, checkBucketFn, retry.Attempts(2)) + if err != nil { + return err } }