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