Skip to content

Commit 26c3e69

Browse files
kakyshamaxim-inj
authored andcommitted
fix(store): gaskv iterator panic during first seek not releasing parent iterator (#65)
1 parent ac26c4b commit 26c3e69

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

store/gaskv/store.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gaskv
22

33
import (
4+
"errors"
45
"io"
56

67
"cosmossdk.io/store/types"
@@ -132,6 +133,16 @@ func (gs *GStore[V]) iterator(start, end []byte, ascending bool) types.GIterator
132133
parent = gs.parent.ReverseIterator(start, end)
133134
}
134135

136+
// release parent open iterator if we panic during consumeSeekGas() and re-panic
137+
defer func() {
138+
if r := recover(); r != nil {
139+
if err := parent.Close(); err != nil {
140+
r = errors.Join(r.(error), err)
141+
}
142+
panic(r)
143+
}
144+
}()
145+
135146
gi := newGasIterator(gs.gasMeter, gs.gasConfig, parent, gs.valueLen)
136147
gi.consumeSeekGas()
137148

0 commit comments

Comments
 (0)