From 004eed1484ee57028a0173e51568305f19d657b6 Mon Sep 17 00:00:00 2001 From: Joey Jiao Date: Thu, 9 May 2024 08:17:44 +0800 Subject: pkg/symbolizzer: use thread safe sync.Map to avoid concurrency issue --- pkg/symbolizer/cache.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'pkg/symbolizer') diff --git a/pkg/symbolizer/cache.go b/pkg/symbolizer/cache.go index 370833953..65e34aae7 100644 --- a/pkg/symbolizer/cache.go +++ b/pkg/symbolizer/cache.go @@ -49,17 +49,14 @@ func (c *Cache) Symbolize(inner func(string, uint64) ([]Frame, error), bin strin // buffer, it won't after interning (and won't prevent GC'ing of the large buffer). // The type is not thread-safe. type Interner struct { - m map[string]string + m sync.Map } func (in *Interner) Do(s string) string { - if in.m == nil { - in.m = make(map[string]string) - } - if interned, ok := in.m[s]; ok { - return interned + if interned, ok := in.m.Load(s); ok { + return interned.(string) } s = strings.Clone(s) - in.m[s] = s + in.m.Store(s, s) return s } -- cgit mrf-deployment