Skip to content

Commit a0636c1

Browse files
codchenudpatil
authored andcommitted
Fix cachekv DeleteAll (#476)
## Describe your changes and provide context Previously when getting keys from local cache the `start`/`end` boundary was not respected ## Testing performed to validate your change unit test that includes keys outside of the requested range
1 parent c0adeb4 commit a0636c1

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

store/cachekv/store.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,11 @@ func (store *Store) GetAllKeyStrsInRange(start, end []byte) (res []string) {
381381
keyStrs[pk] = struct{}{}
382382
}
383383
store.cache.Range(func(key, value any) bool {
384+
kbz := []byte(key.(string))
385+
if bytes.Compare(kbz, start) < 0 || bytes.Compare(kbz, end) >= 0 {
386+
// we don't want to break out of the iteration since cache isn't sorted
387+
return true
388+
}
384389
cv := value.(*types.CValue)
385390
if cv.Value() == nil {
386391
delete(keyStrs, key.(string))

store/cachekv/store_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,16 @@ func TestCacheKVStore(t *testing.T) {
7070
mem.Set(keyFmt(1), valFmt(1))
7171
mem.Set(keyFmt(3), valFmt(4))
7272
st = cachekv.NewStore(mem, types.NewKVStoreKey("CacheKvTest"), types.DefaultCacheSizeLimit)
73+
st.Set(keyFmt(0), valFmt(0))
7374
st.Set(keyFmt(1), valFmt(2))
7475
st.Set(keyFmt(2), valFmt(3))
75-
require.Nil(t, st.DeleteAll(nil, nil))
76+
st.Set(keyFmt(5), valFmt(6))
77+
require.Nil(t, st.DeleteAll(keyFmt(1), keyFmt(5)))
7678
require.Nil(t, st.Get(keyFmt(1)))
7779
require.Nil(t, st.Get(keyFmt(2)))
7880
require.Nil(t, st.Get(keyFmt(3)))
81+
require.NotNil(t, st.Get(keyFmt(0)))
82+
require.NotNil(t, st.Get(keyFmt(5)))
7983
require.Equal(t, valFmt(1), mem.Get(keyFmt(1)))
8084
require.Equal(t, valFmt(4), mem.Get(keyFmt(3)))
8185
}

0 commit comments

Comments
 (0)