From cb2a2f281f9c7fcdbc6d9bc073ce99729b44e2d0 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Wed, 29 Jan 2020 21:19:17 +0200 Subject: [PATCH] lib/mergeset: properly update `lastAccesstime` in indexBlockCache entries This is a follow-up for 6665f10e7bda02a3b362f6559cce14885e8ea948 --- lib/mergeset/part.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/mergeset/part.go b/lib/mergeset/part.go index e03e8977c0..0ab5801caf 100644 --- a/lib/mergeset/part.go +++ b/lib/mergeset/part.go @@ -172,7 +172,7 @@ type indexBlockCache struct { requests uint64 misses uint64 - m map[uint64]indexBlockCacheEntry + m map[uint64]*indexBlockCacheEntry mu sync.RWMutex cleanerStopCh chan struct{} @@ -190,7 +190,7 @@ type indexBlockCacheEntry struct { func newIndexBlockCache() *indexBlockCache { var idxbc indexBlockCache - idxbc.m = make(map[uint64]indexBlockCacheEntry) + idxbc.m = make(map[uint64]*indexBlockCacheEntry) idxbc.cleanerStopCh = make(chan struct{}) idxbc.cleanerWG.Add(1) go func() { @@ -248,10 +248,10 @@ var ( func (idxbc *indexBlockCache) Get(k uint64) *indexBlock { atomic.AddUint64(&idxbc.requests, 1) idxbc.mu.RLock() - idxbe, ok := idxbc.m[k] + idxbe := idxbc.m[k] idxbc.mu.RUnlock() - if ok { + if idxbe != nil { currentTime := atomic.LoadUint64(¤tTimestamp) if atomic.LoadUint64(&idxbe.lastAccessTime) != currentTime { atomic.StoreUint64(&idxbe.lastAccessTime, currentTime) @@ -284,7 +284,7 @@ func (idxbc *indexBlockCache) Put(k uint64, idxb *indexBlock) bool { } // Store idxb in the cache. - idxbe := indexBlockCacheEntry{ + idxbe := &indexBlockCacheEntry{ lastAccessTime: atomic.LoadUint64(¤tTimestamp), idxb: idxb, }