diff --git a/client/pkg/testutil/leak.go b/client/pkg/testutil/leak.go index 8c08fbd5123..9e7a738efa0 100644 --- a/client/pkg/testutil/leak.go +++ b/client/pkg/testutil/leak.go @@ -34,6 +34,8 @@ running(leaking) after all tests. ... } */ +var normalizedRegexp = regexp.MustCompile(`\(0[0-9a-fx, ]*\)`) + func CheckLeakedGoroutine() bool { gs := interestingGoroutines() if len(gs) == 0 { @@ -41,10 +43,9 @@ func CheckLeakedGoroutine() bool { } stackCount := make(map[string]int) - re := regexp.MustCompile(`\(0[0-9a-fx, ]*\)`) for _, g := range gs { // strip out pointer arguments in first function of stack dump - normalized := string(re.ReplaceAll([]byte(g), []byte("(...)"))) + normalized := string(normalizedRegexp.ReplaceAll([]byte(g), []byte("(...)"))) stackCount[normalized]++ } diff --git a/etcdctl/ctlv3/command/util.go b/etcdctl/ctlv3/command/util.go index 03ba24ccf94..05fa19bc49e 100644 --- a/etcdctl/ctlv3/command/util.go +++ b/etcdctl/ctlv3/command/util.go @@ -56,9 +56,10 @@ func addHexPrefix(s string) string { return string(ns) } +var argsRegexp = regexp.MustCompile(`"(?:[^"\\]|\\.)*"|'[^']*'|[^'"\s]\S*[^'"\s]?`) + func Argify(s string) []string { - r := regexp.MustCompile(`"(?:[^"\\]|\\.)*"|'[^']*'|[^'"\s]\S*[^'"\s]?`) - args := r.FindAllString(s, -1) + args := argsRegexp.FindAllString(s, -1) for i := range args { if len(args[i]) == 0 { continue