1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-11 02:10:44 +00:00

fix(router): panic caused by concurrent map read and write (#2678)

This commit is contained in:
Rinka 2023-08-31 18:01:06 +08:00 committed by GitHub
parent 88b5b551c0
commit 87155bfc71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,7 @@ import (
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
"sync"
) )
type weightScaler func(value, weight float64) float64 type weightScaler func(value, weight float64) float64
@ -26,10 +27,13 @@ type WeightManager struct {
cache map[string]float64 cache map[string]float64
scaler weightScaler scaler weightScaler
defaultWeight float64 defaultWeight float64
mu sync.Mutex
} }
// Get gets the weight of specified tag // Get gets the weight of specified tag
func (s *WeightManager) Get(tag string) float64 { func (s *WeightManager) Get(tag string) float64 {
s.mu.Lock()
defer s.mu.Unlock()
weight, ok := s.cache[tag] weight, ok := s.cache[tag]
if ok { if ok {
return weight return weight