mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
all: make regexp.Regexp variables global when not using configuration methods
As the doc of regexp.Regex is saying: "A Regexp is safe for concurrent use by multiple goroutines, except for configuration methods, such as Regexp.Longest." Signed-off-by: Jes Cok <xigua67damn@gmail.com>
This commit is contained in:
@@ -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]++
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user