diff --git a/triedb/pathdb/states.go b/triedb/pathdb/states.go index dc737c3b53..59e7be8979 100644 --- a/triedb/pathdb/states.go +++ b/triedb/pathdb/states.go @@ -176,6 +176,11 @@ func (s *stateSet) accountList() []common.Hash { s.listLock.Lock() 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) s.accountListSorted = list return list @@ -206,6 +211,11 @@ func (s *stateSet) storageList(accountHash common.Hash) []common.Hash { s.listLock.Lock() 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) s.storageListSorted[accountHash] = list return list