This is an automated email from the ASF dual-hosted git repository.

hoshea pushed a commit to branch fgksgf-patch-1
in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git

commit 19ba090a90b56893e21a1020ba3ec0665e1662cd
Author: Hoshea Jiang <[email protected]>
AuthorDate: Thu Apr 21 15:28:01 2022 +0800

    Update kind.go
---
 internal/components/cleanup/kind.go | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/internal/components/cleanup/kind.go 
b/internal/components/cleanup/kind.go
index f0f6888..cd9e9f3 100644
--- a/internal/components/cleanup/kind.go
+++ b/internal/components/cleanup/kind.go
@@ -21,6 +21,7 @@ package cleanup
 import (
        "os"
        "strings"
+       "time"
 
        "gopkg.in/yaml.v2"
        kind "sigs.k8s.io/kind/cmd/kind/app"
@@ -31,6 +32,11 @@ import (
        "github.com/apache/skywalking-infra-e2e/internal/logger"
 )
 
+const (
+       maxRetry      = 5
+       retryInterval = 2 // in seconds
+)
+
 type KindClusterNameConfig struct {
        Name string
 }
@@ -74,7 +80,7 @@ func getKindClusterName(kindConfigFilePath string) (name 
string, err error) {
        return nameConfig.Name, nil
 }
 
-func cleanKindCluster(kindConfigFilePath string) error {
+func cleanKindCluster(kindConfigFilePath string) (err error) {
        clusterName, err := getKindClusterName(kindConfigFilePath)
        if err != nil {
                return err
@@ -83,5 +89,14 @@ func cleanKindCluster(kindConfigFilePath string) error {
        args := []string{"delete", "cluster", "--name", clusterName}
 
        logger.Log.Debugf("cluster delete commands: %s %s", 
constant.KindCommand, strings.Join(args, " "))
-       return kind.Run(kindcmd.NewLogger(), kindcmd.StandardIOStreams(), args)
+
+       // Sometimes kind delete cluster failed, so we retry it.
+       for i := 0; i < maxRetry; i++ {
+               if err = kind.Run(kindcmd.NewLogger(), 
kindcmd.StandardIOStreams(), args); err == nil {
+                       return nil
+               }
+               time.Sleep(retryInterval * time.Second)
+       }
+
+       return
 }

Reply via email to