diff --git a/bigcache_test.go b/bigcache_test.go index 05f72a7a..c3ddad1e 100644 --- a/bigcache_test.go +++ b/bigcache_test.go @@ -934,14 +934,20 @@ func TestBigCache_GetWithInfo(t *testing.T) { // when data, resp, err := cache.GetWithInfo(key) + + // then assertEqual(t, []byte(value), data) noError(t, err) assertEqual(t, Response{}, resp) + + // when clock.set(5) + + // then data, resp, err = cache.GetWithInfo(key) assertEqual(t, err, nil) assertEqual(t, Response{EntryStatus: Expired}, resp) - assertEqual(t, []byte(nil), data) + assertEqual(t, []byte(value), data) } type mockedLogger struct { diff --git a/shard.go b/shard.go index d4cfa6c1..e92c3088 100644 --- a/shard.go +++ b/shard.go @@ -49,15 +49,13 @@ func (s *cacheShard) getWithInfo(key string, hashedKey uint64) (entry []byte, re return nil, resp, ErrEntryNotFound } + entry = readEntry(wrappedEntry) oldestTimeStamp := readTimestampFromEntry(wrappedEntry) + s.lock.RUnlock() + s.hit(hashedKey) if currentTime-oldestTimeStamp >= s.lifeWindow { - s.lock.RUnlock() resp.EntryStatus = Expired - return nil, resp, nil } - entry = readEntry(wrappedEntry) - s.lock.RUnlock() - s.hit(hashedKey) return entry, resp, nil }