From 5bb9ccb6bf65324dca7e5e4d5c79c473c68a3c0e Mon Sep 17 00:00:00 2001
From: Aliaksandr Valialkin <valyala@gmail.com>
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(&currentTimestamp)
 		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(&currentTimestamp),
 		idxb:           idxb,
 	}