triedb/pathdb: double check pattern

This commit is contained in:
cuiweixie 2026-01-17 01:46:34 +08:00
parent 127d1f42bb
commit 2f1722cd87

View file

@ -176,6 +176,11 @@ func (s *stateSet) accountList() []common.Hash {
s.listLock.Lock() s.listLock.Lock()
defer s.listLock.Unlock() defer s.listLock.Unlock()
//double check after acquiring the write lock
if list = s.accountListSorted; list != nil {
return list
}
list = slices.SortedFunc(maps.Keys(s.accountData), common.Hash.Cmp) list = slices.SortedFunc(maps.Keys(s.accountData), common.Hash.Cmp)
s.accountListSorted = list s.accountListSorted = list
return list return list
@ -206,6 +211,11 @@ func (s *stateSet) storageList(accountHash common.Hash) []common.Hash {
s.listLock.Lock() s.listLock.Lock()
defer s.listLock.Unlock() defer s.listLock.Unlock()
//double check after acquiring the write lock
if list := s.storageListSorted[accountHash]; list != nil {
return list
}
list := slices.SortedFunc(maps.Keys(s.storageData[accountHash]), common.Hash.Cmp) list := slices.SortedFunc(maps.Keys(s.storageData[accountHash]), common.Hash.Cmp)
s.storageListSorted[accountHash] = list s.storageListSorted[accountHash] = list
return list return list