Skip to content

Commit

Permalink
Merge PR cosmos#3387: Add missing iterator close
Browse files Browse the repository at this point in the history
  • Loading branch information
HaoyangLiu authored and cwgoes committed Jan 25, 2019
1 parent 6b02e08 commit afb04b1
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 11 deletions.
3 changes: 1 addition & 2 deletions store/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -100,8 +101,6 @@ func (m List) Iterate(ptr interface{}, fn func(uint64) bool) {
break
}
}

iter.Close()
}

func subspace(prefix []byte) (start, end []byte) {
Expand Down
2 changes: 2 additions & 0 deletions x/gov/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 2 additions & 6 deletions x/gov/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -454,8 +452,6 @@ func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID uint64) {

store.Delete(depositsIterator.Key())
}

depositsIterator.Close()
}

// =====================================================
Expand Down
2 changes: 2 additions & 0 deletions x/gov/querier.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions x/staking/keeper/sdk_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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
Expand Down Expand Up @@ -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())
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand All @@ -142,5 +143,4 @@ func (k Keeper) IterateDelegations(ctx sdk.Context, delAddr sdk.AccAddress,
}
i++
}
iterator.Close()
}
1 change: 1 addition & 0 deletions x/staking/keeper/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
2 changes: 2 additions & 0 deletions x/staking/keeper/val_state_change.go
Original file line number Diff line number Diff line change
Expand Up @@ -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() {

Expand Down Expand Up @@ -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:])
Expand Down

0 comments on commit afb04b1

Please sign in to comment.