From e4d83ba2adab9a0d71264985c749f7f10c50abaf Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 9 Apr 2022 09:17:28 -0700 Subject: [PATCH] keymigrate: fix decoding of block-hash row keys (backport #8294) (#8295) (cherry picked from commit 322bb460dd3fb0469dc33da8ab419a366878e5fd) --- CHANGELOG_PENDING.md | 2 ++ scripts/keymigrate/migrate.go | 8 ++++++-- scripts/keymigrate/migrate_test.go | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 1a29512c9..20796532c 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -25,3 +25,5 @@ Special thanks to external contributors on this release: ### IMPROVEMENTS ### BUG FIXES + +- [cli] \#8294 keymigrate: ensure block hash keys are correctly translated. (@creachadair) diff --git a/scripts/keymigrate/migrate.go b/scripts/keymigrate/migrate.go index b53c5e98f..738e982a2 100644 --- a/scripts/keymigrate/migrate.go +++ b/scripts/keymigrate/migrate.go @@ -138,12 +138,16 @@ func migrateKey(key keyID) (keyID, error) { return orderedcode.Append(nil, int64(3), int64(val)) case bytes.HasPrefix(key, keyID("BH:")): - val, err := strconv.Atoi(string(key[3:])) + hash := string(key[3:]) + if len(hash)%2 == 1 { + hash = "0" + hash + } + val, err := hex.DecodeString(hash) if err != nil { return nil, err } - return orderedcode.Append(nil, int64(4), int64(val)) + return orderedcode.Append(nil, int64(4), string(val)) case bytes.HasPrefix(key, keyID("validatorsKey:")): val, err := strconv.Atoi(string(key[14:])) if err != nil { diff --git a/scripts/keymigrate/migrate_test.go b/scripts/keymigrate/migrate_test.go index 8f6f30808..8fb9c282b 100644 --- a/scripts/keymigrate/migrate_test.go +++ b/scripts/keymigrate/migrate_test.go @@ -27,7 +27,7 @@ func getLegacyPrefixKeys(val int) map[string][]byte { "BlockPartTwo": []byte(fmt.Sprintf("P:%d:%d", val+2, val+val)), "BlockCommit": []byte(fmt.Sprintf("C:%d", val)), "SeenCommit": []byte(fmt.Sprintf("SC:%d", val)), - "BlockHeight": []byte(fmt.Sprintf("BH:%d", val)), + "BlockHeight": []byte(fmt.Sprintf("BH:%x", val)), "Validators": []byte(fmt.Sprintf("validatorsKey:%d", val)), "ConsensusParams": []byte(fmt.Sprintf("consensusParamsKey:%d", val)), "ABCIResponse": []byte(fmt.Sprintf("abciResponsesKey:%d", val)),