From 4bd5555bc2651e645d7d2906ee237496b3adc9d3 Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Wed, 15 Jun 2022 13:32:52 -0500 Subject: [PATCH 1/3] feat: improve GetLastCompletedUpgrade --- x/upgrade/keeper/keeper.go | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index c38c2efef670..8dd0f7963f61 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -243,24 +243,18 @@ func (k Keeper) GetLastCompletedUpgrade(ctx sdk.Context) (string, int64) { iter := sdk.KVStoreReversePrefixIterator(ctx.KVStore(k.storeKey), []byte{types.DoneByte}) defer iter.Close() - var upgrades []upgrade + var latest upgrade + var found bool for ; iter.Valid(); iter.Next() { - name := parseDoneKey(iter.Key()) value := int64(sdk.BigEndianToUint64(iter.Value())) - - upgrades = append(upgrades, upgrade{Name: name, BlockHeight: value}) - } - - // sort upgrades in descending order by block height - sort.SliceStable(upgrades, func(i, j int) bool { - return upgrades[i].BlockHeight > upgrades[j].BlockHeight - }) - - if len(upgrades) > 0 { - return upgrades[0].Name, upgrades[0].BlockHeight + if !found || value >= latest.BlockHeight { + found = true + name := parseDoneKey(iter.Key()) + latest = upgrade{Name: name, BlockHeight: value} + } } - return "", 0 + return latest.Name, latest.BlockHeight } // parseDoneKey - split upgrade name from the done key From 73156d1135e394ff9134e6020ef9e9bb3e24cfea Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Fri, 24 Jun 2022 00:37:33 +0200 Subject: [PATCH 2/3] rename --- x/upgrade/keeper/keeper.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index 8dd0f7963f61..743168a70333 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -246,11 +246,11 @@ func (k Keeper) GetLastCompletedUpgrade(ctx sdk.Context) (string, int64) { var latest upgrade var found bool for ; iter.Valid(); iter.Next() { - value := int64(sdk.BigEndianToUint64(iter.Value())) - if !found || value >= latest.BlockHeight { + upgradeHeight := int64(sdk.BigEndianToUint64(iter.Value())) + if !found || upgradeHeight >= latest.BlockHeight { found = true name := parseDoneKey(iter.Key()) - latest = upgrade{Name: name, BlockHeight: value} + latest = upgrade{Name: name, BlockHeight: upgradeHeight} } } From fde59dae3d03b7a87cf7768ae0828c309ef6f5de Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Fri, 24 Jun 2022 17:24:30 +0200 Subject: [PATCH 3/3] use var block --- x/upgrade/keeper/keeper.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index 743168a70333..79b761b726bd 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -243,8 +243,10 @@ func (k Keeper) GetLastCompletedUpgrade(ctx sdk.Context) (string, int64) { iter := sdk.KVStoreReversePrefixIterator(ctx.KVStore(k.storeKey), []byte{types.DoneByte}) defer iter.Close() - var latest upgrade - var found bool + var ( + latest upgrade + found bool + ) for ; iter.Valid(); iter.Next() { upgradeHeight := int64(sdk.BigEndianToUint64(iter.Value())) if !found || upgradeHeight >= latest.BlockHeight {