Skip to content

Commit acf47c7

Browse files
committed
use simple map instead of sync.Map
1 parent 210f52b commit acf47c7

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

dataRetriever/dataPool/proofsCache/export_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,9 @@ func NewProofsCache(bucketSize int) *proofsCache {
1111
func (pc *proofsCache) FullProofsByNonceSize() int {
1212
size := 0
1313

14-
pc.proofsByNonceBuckets.Range(func(key, value interface{}) bool {
15-
bucket := value.(*proofNonceBucket)
14+
for _, bucket := range pc.proofsByNonceBuckets {
1615
size += bucket.size()
17-
18-
return true
19-
})
16+
}
2017

2118
return size
2219
}

dataRetriever/dataPool/proofsCache/proofsCache.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import (
99

1010
type proofsCache struct {
1111
mutProofsCache sync.RWMutex
12-
proofsByNonceBuckets sync.Map
12+
proofsByNonceBuckets map[uint64]*proofNonceBucket
1313
bucketSize uint64
1414
proofsByHash map[string]data.HeaderProofHandler
1515
}
1616

1717
func newProofsCache(bucketSize int) *proofsCache {
1818
return &proofsCache{
19-
proofsByNonceBuckets: sync.Map{},
19+
proofsByNonceBuckets: make(map[uint64]*proofNonceBucket),
2020
bucketSize: uint64(bucketSize),
2121
proofsByHash: make(map[string]data.HeaderProofHandler),
2222
}
@@ -55,10 +55,13 @@ func (pc *proofsCache) getBucketKey(index uint64) uint64 {
5555
func (pc *proofsCache) insertProofByNonce(proof data.HeaderProofHandler) {
5656
bucketKey := pc.getBucketKey(proof.GetHeaderNonce())
5757

58-
bucket, _ := pc.proofsByNonceBuckets.LoadOrStore(bucketKey, newProofBucket())
58+
bucket, ok := pc.proofsByNonceBuckets[bucketKey]
59+
if !ok {
60+
bucket = newProofBucket()
61+
pc.proofsByNonceBuckets[bucketKey] = bucket
62+
}
5963

60-
b := bucket.(*proofNonceBucket)
61-
b.insert(proof)
64+
bucket.insert(proof)
6265
}
6366

6467
func (pc *proofsCache) cleanupProofsBehindNonce(nonce uint64) {
@@ -69,17 +72,18 @@ func (pc *proofsCache) cleanupProofsBehindNonce(nonce uint64) {
6972
pc.mutProofsCache.Lock()
7073
defer pc.mutProofsCache.Unlock()
7174

72-
pc.proofsByNonceBuckets.Range(func(key, value interface{}) bool {
73-
bucket := value.(*proofNonceBucket)
75+
bucketsToDelete := make([]uint64, 0)
7476

77+
for key, bucket := range pc.proofsByNonceBuckets {
7578
if nonce > bucket.maxNonce {
7679
pc.cleanupProofsInBucket(bucket)
77-
pc.proofsByNonceBuckets.Delete(key)
80+
bucketsToDelete = append(bucketsToDelete, key)
7881
}
82+
}
7983

80-
return true
81-
})
82-
84+
for _, key := range bucketsToDelete {
85+
delete(pc.proofsByNonceBuckets, key)
86+
}
8387
}
8488

8589
func (pc *proofsCache) cleanupProofsInBucket(bucket *proofNonceBucket) {

0 commit comments

Comments
 (0)