diff --git a/tests/cluster.go b/tests/cluster.go index e420dfb59e05..8e4d1932e4ad 100644 --- a/tests/cluster.go +++ b/tests/cluster.go @@ -16,6 +16,7 @@ package tests import ( "context" "os" + "strings" "sync" "time" @@ -293,7 +294,18 @@ func NewTestCluster(initialServerCount int, opts ...ConfigOption) (*TestCluster, // RunServer starts to run TestServer. func (c *TestCluster) RunServer(ctx context.Context, server *TestServer) <-chan error { resC := make(chan error) - go func() { resC <- server.Run(ctx) }() + go func() { + for i := 0; i < 10; i++ { + err := server.Run(ctx) + // retryable error + if err != nil && strings.Contains(err.Error(), "address already in use") { + time.Sleep(time.Second) + continue + } + resC <- err + return + } + }() return resC }