Merge PR #3387: Add missing iterator close
This commit is contained in:
parent
6b02e08160
commit
afb04b117e
|
@ -84,6 +84,7 @@ func (m List) Push(value interface{}) {
|
|||
// CONTRACT: No writes may happen within a domain while iterating over it.
|
||||
func (m List) Iterate(ptr interface{}, fn func(uint64) bool) {
|
||||
iter := sdk.KVStorePrefixIterator(m.store, []byte{0x01})
|
||||
defer iter.Close()
|
||||
for ; iter.Valid(); iter.Next() {
|
||||
v := iter.Value()
|
||||
m.cdc.MustUnmarshalBinaryLengthPrefixed(v, ptr)
|
||||
|
@ -100,8 +101,6 @@ func (m List) Iterate(ptr interface{}, fn func(uint64) bool) {
|
|||
break
|
||||
}
|
||||
}
|
||||
|
||||
iter.Close()
|
||||
}
|
||||
|
||||
func subspace(prefix []byte) (start, end []byte) {
|
||||
|
|
|
@ -184,12 +184,14 @@ func ExportGenesis(ctx sdk.Context, k Keeper) GenesisState {
|
|||
for _, proposal := range proposals {
|
||||
proposalID := proposal.GetProposalID()
|
||||
depositsIterator := k.GetDeposits(ctx, proposalID)
|
||||
defer depositsIterator.Close()
|
||||
for ; depositsIterator.Valid(); depositsIterator.Next() {
|
||||
var deposit Deposit
|
||||
k.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), &deposit)
|
||||
deposits = append(deposits, DepositWithMetadata{proposalID, deposit})
|
||||
}
|
||||
votesIterator := k.GetVotes(ctx, proposalID)
|
||||
defer votesIterator.Close()
|
||||
for ; votesIterator.Valid(); votesIterator.Next() {
|
||||
var vote Vote
|
||||
k.cdc.MustUnmarshalBinaryLengthPrefixed(votesIterator.Value(), &vote)
|
||||
|
|
|
@ -422,7 +422,7 @@ func (keeper Keeper) GetDeposits(ctx sdk.Context, proposalID uint64) sdk.Iterato
|
|||
func (keeper Keeper) RefundDeposits(ctx sdk.Context, proposalID uint64) {
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
depositsIterator := keeper.GetDeposits(ctx, proposalID)
|
||||
|
||||
defer depositsIterator.Close()
|
||||
for ; depositsIterator.Valid(); depositsIterator.Next() {
|
||||
deposit := &Deposit{}
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), deposit)
|
||||
|
@ -434,15 +434,13 @@ func (keeper Keeper) RefundDeposits(ctx sdk.Context, proposalID uint64) {
|
|||
|
||||
store.Delete(depositsIterator.Key())
|
||||
}
|
||||
|
||||
depositsIterator.Close()
|
||||
}
|
||||
|
||||
// Deletes all the deposits on a specific proposal without refunding them
|
||||
func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID uint64) {
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
depositsIterator := keeper.GetDeposits(ctx, proposalID)
|
||||
|
||||
defer depositsIterator.Close()
|
||||
for ; depositsIterator.Valid(); depositsIterator.Next() {
|
||||
deposit := &Deposit{}
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), deposit)
|
||||
|
@ -454,8 +452,6 @@ func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID uint64) {
|
|||
|
||||
store.Delete(depositsIterator.Key())
|
||||
}
|
||||
|
||||
depositsIterator.Close()
|
||||
}
|
||||
|
||||
// =====================================================
|
||||
|
|
|
@ -181,6 +181,7 @@ func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper
|
|||
|
||||
var deposits []Deposit
|
||||
depositsIterator := keeper.GetDeposits(ctx, params.ProposalID)
|
||||
defer depositsIterator.Close()
|
||||
for ; depositsIterator.Valid(); depositsIterator.Next() {
|
||||
deposit := Deposit{}
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), &deposit)
|
||||
|
@ -238,6 +239,7 @@ func queryVotes(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Ke
|
|||
|
||||
var votes []Vote
|
||||
votesIterator := keeper.GetVotes(ctx, params.ProposalID)
|
||||
defer votesIterator.Close()
|
||||
for ; votesIterator.Valid(); votesIterator.Next() {
|
||||
vote := Vote{}
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(votesIterator.Value(), &vote)
|
||||
|
|
|
@ -14,6 +14,7 @@ var _ sdk.ValidatorSet = Keeper{}
|
|||
func (k Keeper) IterateValidators(ctx sdk.Context, fn func(index int64, validator sdk.Validator) (stop bool)) {
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
iterator := sdk.KVStorePrefixIterator(store, ValidatorsKey)
|
||||
defer iterator.Close()
|
||||
i := int64(0)
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
validator := types.MustUnmarshalValidator(k.cdc, iterator.Value())
|
||||
|
@ -23,7 +24,6 @@ func (k Keeper) IterateValidators(ctx sdk.Context, fn func(index int64, validato
|
|||
}
|
||||
i++
|
||||
}
|
||||
iterator.Close()
|
||||
}
|
||||
|
||||
// iterate through the bonded validator set and perform the provided function
|
||||
|
@ -52,6 +52,7 @@ func (k Keeper) IterateBondedValidatorsByPower(ctx sdk.Context, fn func(index in
|
|||
// iterate through the active validator set and perform the provided function
|
||||
func (k Keeper) IterateLastValidators(ctx sdk.Context, fn func(index int64, validator sdk.Validator) (stop bool)) {
|
||||
iterator := k.LastValidatorsIterator(ctx)
|
||||
defer iterator.Close()
|
||||
i := int64(0)
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
address := AddressFromLastValidatorPowerKey(iterator.Key())
|
||||
|
@ -66,7 +67,6 @@ func (k Keeper) IterateLastValidators(ctx sdk.Context, fn func(index int64, vali
|
|||
}
|
||||
i++
|
||||
}
|
||||
iterator.Close()
|
||||
}
|
||||
|
||||
// get the sdk.validator for a particular address
|
||||
|
@ -134,6 +134,7 @@ func (k Keeper) IterateDelegations(ctx sdk.Context, delAddr sdk.AccAddress,
|
|||
store := ctx.KVStore(k.storeKey)
|
||||
delegatorPrefixKey := GetDelegationsKey(delAddr)
|
||||
iterator := sdk.KVStorePrefixIterator(store, delegatorPrefixKey) //smallest to largest
|
||||
defer iterator.Close()
|
||||
for i := int64(0); iterator.Valid(); iterator.Next() {
|
||||
del := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
stop := fn(i, del)
|
||||
|
@ -142,5 +143,4 @@ func (k Keeper) IterateDelegations(ctx sdk.Context, delAddr sdk.AccAddress,
|
|||
}
|
||||
i++
|
||||
}
|
||||
iterator.Close()
|
||||
}
|
||||
|
|
|
@ -215,6 +215,7 @@ func TestingUpdateValidator(keeper Keeper, ctx sdk.Context, validator types.Vali
|
|||
{ // Remove any existing power key for validator.
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
iterator := sdk.KVStorePrefixIterator(store, ValidatorsByPowerIndexKey)
|
||||
defer iterator.Close()
|
||||
deleted := false
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
valAddr := parseValidatorPowerRankKey(iterator.Key())
|
||||
|
|
|
@ -36,6 +36,7 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []ab
|
|||
|
||||
// Iterate over validators, highest power to lowest.
|
||||
iterator := sdk.KVStoreReversePrefixIterator(store, ValidatorsByPowerIndexKey)
|
||||
defer iterator.Close()
|
||||
count := 0
|
||||
for ; iterator.Valid() && count < int(maxValidators); iterator.Next() {
|
||||
|
||||
|
@ -254,6 +255,7 @@ func (k Keeper) getLastValidatorsByAddr(ctx sdk.Context) validatorsByAddr {
|
|||
last := make(validatorsByAddr)
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
iterator := sdk.KVStorePrefixIterator(store, LastValidatorPowerKey)
|
||||
defer iterator.Close()
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
var valAddr [sdk.AddrLen]byte
|
||||
copy(valAddr[:], iterator.Key()[1:])
|
||||
|
|
Loading…
Reference in New Issue