diff --git a/pkg/loadbalance/consist.go b/pkg/loadbalance/consist.go index 57300ceb4e..ce7789449e 100644 --- a/pkg/loadbalance/consist.go +++ b/pkg/loadbalance/consist.go @@ -252,9 +252,10 @@ func (cb *consistBalancer) GetPicker(e discovery.Result) Picker { cii, ok := cb.cachedConsistInfo.Load(e.CacheKey) if !ok { cii, _, _ = cb.sfg.Do(e.CacheKey, func() (interface{}, error) { - return cb.newConsistInfo(e), nil + ci := cb.newConsistInfo(e) + cb.cachedConsistInfo.Store(e.CacheKey, ci) + return ci, nil }) - cb.cachedConsistInfo.Store(e.CacheKey, cii) } ci = cii.(*consistInfo) } else { diff --git a/pkg/loadbalance/consist_test.go b/pkg/loadbalance/consist_test.go index 12e47c830d..9af672f274 100644 --- a/pkg/loadbalance/consist_test.go +++ b/pkg/loadbalance/consist_test.go @@ -298,7 +298,7 @@ func TestWeightedConsistBalance(t *testing.T) { } } -func TestConsistPicker_Reblance(t *testing.T) { +func TestConsistPicker_Rebalance(t *testing.T) { opt := NewConsistentHashOption(getKey) insList := makeNInstances(10, 10) e := discovery.Result{