-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perf: Amortize clearing unsorted cache entries (Juno genesis fix) #12885
Conversation
I dug deeper and found the root problem. Replaced all of the previous workaround with a real fix and should also help in other situations besides just the Juno genesis issue |
@odeke-em not sure if you've started looking at this, but the latest code is much different than the previous version. Just a heads up. |
Added a benchmark which illustrates the problem. Finishes in a few seconds with the changes in the PR. Takes minutes without it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you fro this change @blazeroni and great to meet you! I've added some initial comments but one of them will help to avoid polluting benchmarks. I encourage you to run the benchmarks before and after this change, on a quiet computer that doesn't have a web browser running nor heavy programs, and you can run the benchmarks by doing this
Before administering the code change in store/cachekv/store.go
go test -run=^$ -bench=LargeUnsortedMisses -benchmem=true -count=20 > before.txt
After administering the code change in store/cachekv/store.go
go test -run=^$ -bench=LargeUnsortedMisses -benchmem=true -count=20 > after.txt
Compare the results
To compare the results please firstly install benchstat go get -u golang.org/x/perf/cmd/benchstat
benchstat before.txt after.txt
then paste the results into your commit message to clearly exhibit the performance differences
Benchmark stats: name old time/op new time/op delta LargeUnsortedMisses-32 21.2s ± 9% 0.0s ± 1% -99.91% (p=0.000 n=20+17) name old alloc/op new alloc/op delta LargeUnsortedMisses-32 1.64GB ± 0% 0.00GB ± 0% -99.83% (p=0.000 n=19+19) name old allocs/op new allocs/op delta LargeUnsortedMisses-32 20.0k ± 0% 41.1k ± 0% +105.23% (p=0.000 n=19+20)
@odeke-em thanks for the feedback! I've updated the benchmark and added it as a comment. I had to reduce the size of the original benchmark (from 200k to 10k unsorted values) since the before benchmark was crashing with values much higher than what I used. Regardless, the difference between before/after is still extreme. |
Impressive results. I've measured similar duration for crisis invariants on similar hardware. Moreover since this PR changes CacheKV performance, the whole startup from a large Without this change the invariants took roughly 14 hours to complete, and there is a stage of replaying blocks and other initialization that took an additional two hours. Validators were reporting 16+ hours to begin dialing peers. With this change the entire initialization process completes in around 5 minutes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reading through the cachekv iterator implementation this seems like an obvious improvement. Great work!
If I'm understanding right the only additional side effect here is moving items from the unsorted cache into the sorted cache up to the size of THRESHOLD (1024). This is a perf improvement, but especially so when dirtyItems
is called under the following circumstances:
- There are a very large number of unsorted, dirty cache items
dirtyItems
is called many times (many iterators are created)- the range of said iterators is quite small.
This addresses the last point by not wasting the CPU cycles we've already spent in sorting. Since memIterator
only ever enumerates the sortedCache MemDB
I can't see how this would be harmful.
Does my analysis sound consistent with yours? I'm tentatively approving, but want to make sure on the same page.
Can you offer any help in obtaining dataset you used, and some instructions to run so that I can see the benchmarks myself?
@kocubinski yes, your analysis matches my own. To test/verify this, I used a modified version of the latest Juno production release, available here: https://github.com/blazeroni/juno-bounty/commits/v9.0.0-invariants. That version depends on a modified v0.45.6 Cosmos SDK, with the only change being the changes in this PR. Instructions to obtain the Juno genesis file are here: https://github.com/CosmosContracts/incident-response/blob/main/28-July-22/genesis.md. You'll just need to install, init, replace genesis, and start. Cheers! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I slept on it and just re-read the code and now it makes sense to me. Thank you @blazeroni! Let me make an update of the commit message so as to post the benchmarks and ensure they are seen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Codecov Report
@@ Coverage Diff @@
## main #12885 +/- ##
==========================================
- Coverage 56.58% 55.58% -1.01%
==========================================
Files 697 647 -50
Lines 59285 54900 -4385
==========================================
- Hits 33545 30514 -3031
+ Misses 22909 21921 -988
+ Partials 2831 2465 -366 |
store/cachekv/store.go
Outdated
@@ -280,6 +281,7 @@ const ( | |||
|
|||
// Constructs a slice of dirty items, to use w/ memIterator. | |||
func (store *Store) dirtyItems(start, end []byte) { | |||
const THRESHOLD = 1024 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we move this outside the method and give it a better name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also explain the reasoning behind 1024 in a godoc comment :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, though 1024 pre-dates this change and apparently is a magic number: #10026 (comment)
It's re-used in this PR since it made sense (to me) that the minimum number of elements removed matches the threshold to sort.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alexanderbez moved and renamed. Since it's magic and documented where it's used, I haven't added a godoc comment. Open to suggestions.
@marbar3778 do we want this backported? |
would be nice. I cant see why its not backwards compatible |
…2885) This change fixes a bounty by the Juno team. Juno's invariant checks took 10 hours during their most recent chain halt. This PR cuts that down to 30 seconds. See https://github.com/CosmosContracts/bounties#improve-speed-of-invariant-checks. The root problem is deep in the `can-withdraw` invariant check, which calls this repeatedly: https://github.com/cosmos/cosmos-sdk/blob/main/x/distribution/keeper/store.go#L337. Iterators have a chain of parents and in this case creates an iterator from the `cachekv` store. For the genesis file, it has a cache of 500,000+ unsorted entries, which are sorted as strings here: https://github.com/cosmos/cosmos-sdk/blob/main/store/cachekv/store.go#L314. Each delegation from `can-withdraw` uses this cache and many of the cache checks miss or are a very small range. This means very few entries get removed from the unsorted cache and they have to be re-sorted on the next call. With a full cache it takes about 180ms on my machine to sort them. This change introduce a minimum number of entries that will get processed and removed from the unsorted list. It's set at the same value that directs the code to sort them in the first place. This ensures the unsorted values get removed in a relative short amount of time, and amortizes the cost to ensure an individual check does not have to process the entire cache. ## Benchmarks On running the benchmarks included in this change produces: ```shell name old time/op new time/op delta LargeUnsortedMisses-32 21.2s ± 9% 0.0s ± 1% -99.91% (p=0.000 n=20+17) name old alloc/op new alloc/op delta LargeUnsortedMisses-32 1.64GB ± 0% 0.00GB ± 0% -99.83% (p=0.000 n=19+19) name old allocs/op new allocs/op delta LargeUnsortedMisses-32 20.0k ± 0% 41.1k ± 0% +105.23% (p=0.000 n=19+20) ``` ## Invariant checks results This is what the invariant checks for Juno look like with this change (on a Hetzner AX101): ```shell INF starting node with ABCI Tendermint in-process 4:11PM INF Starting multiAppConn service impl=multiAppConn module=proxy 4:11PM INF Starting localClient service connection=query impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=snapshot impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=mempool impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=consensus impl=localClient module=abci-client 4:11PM INF Starting EventBus service impl=EventBus module=events 4:11PM INF Starting PubSub service impl=PubSub module=pubsub 4:11PM INF Starting IndexerService service impl=IndexerService module=txindex 4:11PM INF ABCI Handshake App Info hash= height=0 module=consensus protocol-version=0 software-version=v9.0.0-36-g8fd6f16 4:11PM INF ABCI Replay Blocks appHeight=0 module=consensus stateHeight=0 storeHeight=0 4:12PM INF asserting crisis invariants inv=1/11 module=x/crisis name=gov/module-account 4:12PM INF asserting crisis invariants inv=2/11 module=x/crisis name=distribution/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=3/11 module=x/crisis name=distribution/can-withdraw 4:12PM INF asserting crisis invariants inv=4/11 module=x/crisis name=distribution/reference-count 4:12PM INF asserting crisis invariants inv=5/11 module=x/crisis name=distribution/module-account 4:12PM INF asserting crisis invariants inv=6/11 module=x/crisis name=bank/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=7/11 module=x/crisis name=bank/total-supply 4:12PM INF asserting crisis invariants inv=8/11 module=x/crisis name=staking/module-accounts 4:12PM INF asserting crisis invariants inv=9/11 module=x/crisis name=staking/nonnegative-power 4:12PM INF asserting crisis invariants inv=10/11 module=x/crisis name=staking/positive-delegation 4:12PM INF asserting crisis invariants inv=11/11 module=x/crisis name=staking/delegator-shares 4:12PM INF asserted all invariants duration=28383.559601 height=4136532 module=x/crisis ``` ## Alternatives There is another PR which fixes this problem for the Juno genesis file #12886. However, because of its concurrent nature, it happens to hit a large range relatively early, clearing the unsorted entries and allowing the rest of the checks to not sort it. (cherry picked from commit 4fc1f73) # Conflicts: # CHANGELOG.md
…2885) This change fixes a bounty by the Juno team. Juno's invariant checks took 10 hours during their most recent chain halt. This PR cuts that down to 30 seconds. See https://github.com/CosmosContracts/bounties#improve-speed-of-invariant-checks. The root problem is deep in the `can-withdraw` invariant check, which calls this repeatedly: https://github.com/cosmos/cosmos-sdk/blob/main/x/distribution/keeper/store.go#L337. Iterators have a chain of parents and in this case creates an iterator from the `cachekv` store. For the genesis file, it has a cache of 500,000+ unsorted entries, which are sorted as strings here: https://github.com/cosmos/cosmos-sdk/blob/main/store/cachekv/store.go#L314. Each delegation from `can-withdraw` uses this cache and many of the cache checks miss or are a very small range. This means very few entries get removed from the unsorted cache and they have to be re-sorted on the next call. With a full cache it takes about 180ms on my machine to sort them. This change introduce a minimum number of entries that will get processed and removed from the unsorted list. It's set at the same value that directs the code to sort them in the first place. This ensures the unsorted values get removed in a relative short amount of time, and amortizes the cost to ensure an individual check does not have to process the entire cache. ## Benchmarks On running the benchmarks included in this change produces: ```shell name old time/op new time/op delta LargeUnsortedMisses-32 21.2s ± 9% 0.0s ± 1% -99.91% (p=0.000 n=20+17) name old alloc/op new alloc/op delta LargeUnsortedMisses-32 1.64GB ± 0% 0.00GB ± 0% -99.83% (p=0.000 n=19+19) name old allocs/op new allocs/op delta LargeUnsortedMisses-32 20.0k ± 0% 41.1k ± 0% +105.23% (p=0.000 n=19+20) ``` ## Invariant checks results This is what the invariant checks for Juno look like with this change (on a Hetzner AX101): ```shell INF starting node with ABCI Tendermint in-process 4:11PM INF Starting multiAppConn service impl=multiAppConn module=proxy 4:11PM INF Starting localClient service connection=query impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=snapshot impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=mempool impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=consensus impl=localClient module=abci-client 4:11PM INF Starting EventBus service impl=EventBus module=events 4:11PM INF Starting PubSub service impl=PubSub module=pubsub 4:11PM INF Starting IndexerService service impl=IndexerService module=txindex 4:11PM INF ABCI Handshake App Info hash= height=0 module=consensus protocol-version=0 software-version=v9.0.0-36-g8fd6f16 4:11PM INF ABCI Replay Blocks appHeight=0 module=consensus stateHeight=0 storeHeight=0 4:12PM INF asserting crisis invariants inv=1/11 module=x/crisis name=gov/module-account 4:12PM INF asserting crisis invariants inv=2/11 module=x/crisis name=distribution/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=3/11 module=x/crisis name=distribution/can-withdraw 4:12PM INF asserting crisis invariants inv=4/11 module=x/crisis name=distribution/reference-count 4:12PM INF asserting crisis invariants inv=5/11 module=x/crisis name=distribution/module-account 4:12PM INF asserting crisis invariants inv=6/11 module=x/crisis name=bank/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=7/11 module=x/crisis name=bank/total-supply 4:12PM INF asserting crisis invariants inv=8/11 module=x/crisis name=staking/module-accounts 4:12PM INF asserting crisis invariants inv=9/11 module=x/crisis name=staking/nonnegative-power 4:12PM INF asserting crisis invariants inv=10/11 module=x/crisis name=staking/positive-delegation 4:12PM INF asserting crisis invariants inv=11/11 module=x/crisis name=staking/delegator-shares 4:12PM INF asserted all invariants duration=28383.559601 height=4136532 module=x/crisis ``` ## Alternatives There is another PR which fixes this problem for the Juno genesis file #12886. However, because of its concurrent nature, it happens to hit a large range relatively early, clearing the unsorted entries and allowing the rest of the checks to not sort it. (cherry picked from commit 4fc1f73) # Conflicts: # CHANGELOG.md
…ckport #12885) (#12961) * perf: Amortize clearing unsorted cache entries (Juno genesis fix) (#12885) This change fixes a bounty by the Juno team. Juno's invariant checks took 10 hours during their most recent chain halt. This PR cuts that down to 30 seconds. See https://github.com/CosmosContracts/bounties#improve-speed-of-invariant-checks. The root problem is deep in the `can-withdraw` invariant check, which calls this repeatedly: https://github.com/cosmos/cosmos-sdk/blob/main/x/distribution/keeper/store.go#L337. Iterators have a chain of parents and in this case creates an iterator from the `cachekv` store. For the genesis file, it has a cache of 500,000+ unsorted entries, which are sorted as strings here: https://github.com/cosmos/cosmos-sdk/blob/main/store/cachekv/store.go#L314. Each delegation from `can-withdraw` uses this cache and many of the cache checks miss or are a very small range. This means very few entries get removed from the unsorted cache and they have to be re-sorted on the next call. With a full cache it takes about 180ms on my machine to sort them. This change introduce a minimum number of entries that will get processed and removed from the unsorted list. It's set at the same value that directs the code to sort them in the first place. This ensures the unsorted values get removed in a relative short amount of time, and amortizes the cost to ensure an individual check does not have to process the entire cache. ## Benchmarks On running the benchmarks included in this change produces: ```shell name old time/op new time/op delta LargeUnsortedMisses-32 21.2s ± 9% 0.0s ± 1% -99.91% (p=0.000 n=20+17) name old alloc/op new alloc/op delta LargeUnsortedMisses-32 1.64GB ± 0% 0.00GB ± 0% -99.83% (p=0.000 n=19+19) name old allocs/op new allocs/op delta LargeUnsortedMisses-32 20.0k ± 0% 41.1k ± 0% +105.23% (p=0.000 n=19+20) ``` ## Invariant checks results This is what the invariant checks for Juno look like with this change (on a Hetzner AX101): ```shell INF starting node with ABCI Tendermint in-process 4:11PM INF Starting multiAppConn service impl=multiAppConn module=proxy 4:11PM INF Starting localClient service connection=query impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=snapshot impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=mempool impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=consensus impl=localClient module=abci-client 4:11PM INF Starting EventBus service impl=EventBus module=events 4:11PM INF Starting PubSub service impl=PubSub module=pubsub 4:11PM INF Starting IndexerService service impl=IndexerService module=txindex 4:11PM INF ABCI Handshake App Info hash= height=0 module=consensus protocol-version=0 software-version=v9.0.0-36-g8fd6f16 4:11PM INF ABCI Replay Blocks appHeight=0 module=consensus stateHeight=0 storeHeight=0 4:12PM INF asserting crisis invariants inv=1/11 module=x/crisis name=gov/module-account 4:12PM INF asserting crisis invariants inv=2/11 module=x/crisis name=distribution/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=3/11 module=x/crisis name=distribution/can-withdraw 4:12PM INF asserting crisis invariants inv=4/11 module=x/crisis name=distribution/reference-count 4:12PM INF asserting crisis invariants inv=5/11 module=x/crisis name=distribution/module-account 4:12PM INF asserting crisis invariants inv=6/11 module=x/crisis name=bank/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=7/11 module=x/crisis name=bank/total-supply 4:12PM INF asserting crisis invariants inv=8/11 module=x/crisis name=staking/module-accounts 4:12PM INF asserting crisis invariants inv=9/11 module=x/crisis name=staking/nonnegative-power 4:12PM INF asserting crisis invariants inv=10/11 module=x/crisis name=staking/positive-delegation 4:12PM INF asserting crisis invariants inv=11/11 module=x/crisis name=staking/delegator-shares 4:12PM INF asserted all invariants duration=28383.559601 height=4136532 module=x/crisis ``` ## Alternatives There is another PR which fixes this problem for the Juno genesis file #12886. However, because of its concurrent nature, it happens to hit a large range relatively early, clearing the unsorted entries and allowing the rest of the checks to not sort it. (cherry picked from commit 4fc1f73) # Conflicts: # CHANGELOG.md * fix conflict Co-authored-by: blazeroni <blazeroni@gmail.com> Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Marko <marbar3778@yahoo.com>
Squashed commit of the following: commit 26786a0 Author: Julien Robert <julien@rbrt.fr> Date: Mon Oct 3 18:13:53 2022 +0200 chore: prepare `v0.46.2` release (cosmos#13436) commit 72a904d Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 30 18:16:51 2022 -0400 fix: add close for grpcOnly mode (backport cosmos#13418) (cosmos#13422) commit f80e883 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Sep 29 08:10:41 2022 -0500 fix: add gRPC nil/zero check in query (backport cosmos#13352) (cosmos#13417) * fix: add gRPC nil/zero check in query (cosmos#13352) (cherry picked from commit a9f02d9) # Conflicts: # CHANGELOG.md # codec/proto_codec_test.go * fix conflicts * fix conflicts Co-authored-by: yihuang <huang@crypto.com> commit 51c8a1a Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 27 07:48:21 2022 -0500 feat: Add notice for possible iavl fast node migration (backport cosmos#13390) (cosmos#13398) * add notice for possible iavl fast node migration (cosmos#13390) (cherry picked from commit b609105) * Update baseapp/baseapp.go Co-authored-by: adu-crypto <94821467+adu-crypto@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 95948f6 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 14:26:27 2022 -0500 perf: reduce user's password prompts when calling keyring List function (backport cosmos#13207) (cosmos#13368) * perf: reduce user's password prompts when calling keyring List function (cosmos#13207) * Reduce user password prompts by taking advantage of the already existing MigrateAll function * Print message when no records were found on the keyring * Update changelog * Fix migration test * Add keys sort (cherry picked from commit 4882f93) # Conflicts: # CHANGELOG.md * fix conflicts * suggestions Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Ezequiel Raynaudo <raynaudo.ee@gmail.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> commit c351441 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 08:26:34 2022 -0500 docs: guidelines for proto message's String() method (cosmos#13364) (cosmos#13366) (cherry picked from commit 8dd708d) Co-authored-by: likhita-809 <78951027+likhita-809@users.noreply.github.com> commit 72f8923 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 08:16:20 2022 -0500 feat: add `draft-proposal` for x/group (backport cosmos#13353) (cosmos#13359) * feat: add `draft-proposal` for x/group (cosmos#13353) * feat: add `draft-proposal` for x/group * add changelog * extract useful function * add `GetMsgFromTypeURL` tests (cherry picked from commit 7eb259f) # Conflicts: # CHANGELOG.md # types/tx_msg.go # x/gov/client/cli/prompt.go * fix conflicts * fix whitespace * backport cosmos#13350 * renaming as main * updates Co-authored-by: Julien Robert <julien@rbrt.fr> commit 9454b97 Author: Julien Robert <julien@rbrt.fr> Date: Tue Sep 20 18:02:24 2022 +0200 fix: fix buf commit (cosmos#13344) commit bbcf2f1 Author: Julien Robert <julien@rbrt.fr> Date: Tue Sep 20 17:04:54 2022 +0200 fix: fix buf unexisting repo (cosmos#13343) commit f57a110 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 16:30:54 2022 +0200 fix: ensure withdraw_rewards events are always emitted on reward withdrawal (backport cosmos#13323) (cosmos#13339) * fix: ensure withdraw_rewards events are always emitted on reward withdrawal (cosmos#13323) (cherry picked from commit c1c23a7) # Conflicts: # CHANGELOG.md # tests/integration/distribution/keeper/delegation_test.go # testutil/sims/app_helpers.go # x/distribution/keeper/delegation.go # x/distribution/keeper/delegation_test.go # x/distribution/keeper/keeper.go * fix changelog * fix conflcits Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 43f74d3 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 16:29:50 2022 +0200 feat: configurable fastnode (backport cosmos#13321) (cosmos#13337) * feat: configurable fastnode (cosmos#13321) (cherry picked from commit 412e2fc) # Conflicts: # CHANGELOG.md # fuzz/tests/store_internal_proofs_createnonmembershipproof_test.go # go.mod # go.sum # simapp/go.mod # simapp/go.sum # tests/go.mod # tests/go.sum * fix conflicts * test fix build * test fix build * fix typo * fix replace Co-authored-by: Marko <marbar3778@yahoo.com> commit 6c8614c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 10:40:42 2022 +0200 fix: streaming listeners are not called for deliver tx event (backport cosmos#13334) (cosmos#13336) * fix: streaming listeners are not called for deliver tx event (cosmos#13334) * Problem: streaming listeners are not called for deliver tx event it was removed accidentally, add back. * Update CHANGELOG.md * try to fix e2e test by wait for one more block (cherry picked from commit 822900b) # Conflicts: # CHANGELOG.md # x/auth/tx/service_test.go * Update CHANGELOG.md * Update x/auth/tx/service_test.go * Update x/auth/tx/service_test.go Co-authored-by: yihuang <huang@crypto.com> commit 100db2e Author: Julien Robert <julien@rbrt.fr> Date: Mon Sep 19 16:00:44 2022 +0200 fix: remove community-pool-spend from draft-cli prompt (cosmos#13330) commit ef0f19c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Sep 19 13:35:08 2022 +0000 feat: CLI tooling to generate proposal JSONs (backport cosmos#13304) (cosmos#13328) * feat: CLI tooling to generate proposal JSONs (cosmos#13304) (cherry picked from commit 7252f4a) # Conflicts: # CHANGELOG.md # api/cosmos/nft/v1beta1/tx.pulsar.go # go.mod # go.sum # simapp/go.mod # simapp/go.sum # tests/go.mod # tests/go.sum # x/gov/README.md # x/group/spec/05_client.md * fix changelog * remove unnecessary addition * updates * fix docs * updates Co-authored-by: Julien Robert <julien@rbrt.fr> commit c524571 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 16 16:03:13 2022 +0200 fix: keep the balance query endpoint compatible with legacy blocks (backport cosmos#13301) (cosmos#13318) * fix: keep the balance query endpoint compatible with legacy blocks (cosmos#13301) * keep the balance query endpoint compatible with legacy blocks Closes: cosmos#13296 A temporary solution before the proxy tool developed, since the balance endpoint is too important. * Update CHANGELOG.md * Apply suggestions from code review Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit 6c4f94b) # Conflicts: # CHANGELOG.md # x/bank/keeper/view.go * Apply suggestions from code review * fix lint Co-authored-by: yihuang <huang@crypto.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 51a9014 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Sep 15 16:43:38 2022 +0200 fix: types: correctly coalesce coins even with repeated denominations & simplify logic (backport cosmos#13265) (cosmos#13302) * fix: types: correctly coalesce coins even with repeated denominations & simplify logic (cosmos#13265) (cherry picked from commit 83f88a6) # Conflicts: # types/coin_test.go * fix conflict * add changelog Co-authored-by: Emmanuel T Odeke <emmanuel@orijtech.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit ac4a066 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 10:56:13 2022 +0200 feat: add more coins after add-genesis-account is made (backport cosmos#13233) (cosmos#13261) * feat: add more coins after add-genesis-account is made (cosmos#13233) (cherry picked from commit c32493a) # Conflicts: # CHANGELOG.md * updates Co-authored-by: Reece Williams <31943163+Reecepbcups@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 78336ef Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 09:08:25 2022 +0200 fix: sequence in `sign-batch` (backport cosmos#13200) (cosmos#13263) commit 77fcbbd Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 08:50:45 2022 +0200 docs: adds gov groups metadata spec (cosmos#13118) (cosmos#13264) commit 70943c6 Author: Julien Robert <julien@rbrt.fr> Date: Mon Sep 12 15:07:18 2022 +0200 chore: pin version of golangci-lint (cosmos#13245) commit 25e7f9b Author: Jacob Gadikian <jacobgadikian@gmail.com> Date: Mon Sep 12 15:35:06 2022 +0700 fix: make 46's linter work (cosmos#13186) commit 8121f34 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 9 10:28:02 2022 +0200 fix: Add withdraw proposal cmd to group's CLI tx cmds (backport cosmos#13214) (cosmos#13216) commit 095c2b0 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 2 16:01:21 2022 +0200 chore: replace deprecated dgrijalva/jwt-go dep (backport cosmos#13093) (cosmos#13136) * chore: replace deprecated dgrijalva/jwt-go dep (cosmos#13093) * chore: replace deprecated dgrijalva/jwt-go dep * Update go.mod (cherry picked from commit f5f84ad) # Conflicts: # go.mod # go.sum * fix conflict Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 9405a05 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 2 07:32:08 2022 +0200 feat: Add a cli cmd to prune old states according to current settings (backport cosmos#12742) (cosmos#13119) * feat: Add a cli cmd to prune old states according to current settings (cosmos#12742) * add PruningCmd and change PruneStores signature * the mimimum default pruning interval is 10 Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit d874ace) * fix backport error Co-authored-by: adu-crypto <94821467+adu-crypto@users.noreply.github.com> Co-authored-by: adu <adu.du@crypto.com> commit a95c626 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 31 14:21:02 2022 +0200 fix: rollback command don't actually delete multistore versions (backport cosmos#11361) (cosmos#13089) * fix: rollback command don't actually delete multistore versions (cosmos#11361) * rollback command don't actually delete multistore versions Closes: cosmos#11333 - add unit tests - use LoadVersionForOverwriting - update tendermint dependency to 0.35.x release branch Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> flushMetadata after rollback Update server/rollback.go Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> fix build gofumpt * fix unit test (cherry picked from commit 51d2de5) * fix unit test * changelog * api breaking changelog Co-authored-by: yihuang <huang@crypto.com> commit 78c24eb Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 31 14:04:56 2022 +0200 fix: call `SetIAVLCacheSize` with the configured value in simapp (backport cosmos#13107) (cosmos#13108) * fix: call `SetIAVLCacheSize` with the configured value in simapp (cosmos#13107) * Call `SetIAVLCacheSize` with the configured value in simapp. * Update CHANGELOG.md (cherry picked from commit ab33342) # Conflicts: # CHANGELOG.md * Apply suggestions from code review Co-authored-by: yihuang <huang@crypto.com> commit bb190f6 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 29 11:36:24 2022 +0000 chore: bump gin-gonic dep (backport cosmos#13061) (cosmos#13062) * deps: bump gin-gonic (cosmos#13061) Co-authored-by: Julien Robert <julien@rbrt.fr> (cherry picked from commit d11196a) # Conflicts: # go.sum * fix conflicts Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: marbar3778 <marbar3778@yahoo.com> commit 1af5c72 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sat Aug 27 09:18:50 2022 +0200 feat(x/auth): Add auth sim decoder case for AccountNumberStoreKeyPrefix (backport cosmos#13048) (cosmos#13054) commit e2fe96a Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Aug 26 13:16:02 2022 -0400 feat(x/authz): Add the GetAuthorization function. (backport cosmos#13047) (cosmos#13052) * feat(x/authz): Add the GetAuthorization function. (cosmos#13047) * [13027]: Create the GetAuthorization function (in the authz module). * [13027]: Add unit tests for the new GetAuthorization function. * [13027]: Add changelog entry. (cherry picked from commit 5e4651e) # Conflicts: # CHANGELOG.md # x/authz/keeper/keeper_test.go * fix changelog * Fix failed merge. * Fix build issue introduced by merge. Co-authored-by: Daniel Wedul <github@wedul.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit b9d4ed8 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 25 15:15:13 2022 -0400 fix: missing return statement in BaseApp.Query (backport cosmos#13046) (cosmos#13049) * fix: missing return statement in BaseApp.Query (cosmos#13046) ## Description Closes: cosmos#13040 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit c73171f) # Conflicts: # CHANGELOG.md * fix conflicts Co-authored-by: Julien Robert <julien@rbrt.fr> commit 704fff5 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 25 14:30:04 2022 +0200 fix: exporting the blockParams regression (backport cosmos#13029) (cosmos#13037) * fix: exporting the blockParams regression (cosmos#13029) ## Description Closes: cosmos#13024 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [x] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [x] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [x] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit e1999e4) # Conflicts: # CHANGELOG.md # server/export_test.go * fix conflicts Co-authored-by: JayT106 <JayT106@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit cb7bdca Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 24 15:15:28 2022 -0400 ci: fix release notes not populated by goreleaser (backport cosmos#12919) (cosmos#13018) * ci: fix release notes not populated by goreleaser (cherry picked from commit c670fec) # Conflicts: # cosmovisor/go.mod # cosmovisor/go.sum # go.work.sum * updates * revert Co-authored-by: Julien Robert <julien@rbrt.fr> commit 252c673 Author: Julien Robert <julien@rbrt.fr> Date: Wed Aug 24 17:43:33 2022 +0200 chore: v0.46.1 release changelog (cosmos#13011) * chore: v0.46.1 release changelog * updates * updates commit 60e6274 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 24 16:45:44 2022 +0200 feat: Change the default priority mechanism to be based on gas price (backport cosmos#12953) (cosmos#13006) * feat: Change the default priority mechanism to be based on gas price (cosmos#12953) (cherry picked from commit befd816) # Conflicts: # CHANGELOG.md # x/auth/ante/fee_test.go * fix conflict Co-authored-by: yihuang <huang@crypto.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit afb3def Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 23 14:54:38 2022 -0400 docs: improve UPGRADING.md instructions for v0.46.0 (backport cosmos#12646) (cosmos#13004) * docs: improve UPGRADING.md instructions for v0.46.0 (cosmos#12646) ## Description This PR is aimed to improve further the UGPRADING.md for v0.46.0. We've merged cosmos#12477 for having concurrent work on the file. - ref cosmos#12992 and closes cosmos#12991 - closes cosmos#12963 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit c76a00b) # Conflicts: # .gitignore # CHANGELOG.md # Makefile # UPGRADING.md * fix conflict Co-authored-by: Julien Robert <julien@rbrt.fr> commit 90ef369 Author: Sai Kumar <17549398+gsk967@users.noreply.github.com> Date: Tue Aug 23 20:01:13 2022 +0530 fix: fix the gov proposals (cosmos#13002) commit d3d4675 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 23 14:11:23 2022 +0200 fix: proper error when parsing telemetry configuration (backport cosmos#12981) (cosmos#12998) * fix: proper error when parsing telemetry configuration (cosmos#12981) When parsing `telemetry.global-labels` config the code assumes that the type will be an array. I saw an issue where someone edited the configuration in the wrong way and got the following error: ![photo_2022-08-21_08-02-21](https://user-images.githubusercontent.com/22855163/185793842-c5759a54-1860-4dd1-bdb4-b94f4dab3c16.jpg) Instead, I suggest here to print a proper error log to indicate what the issue is. (cherry picked from commit c24c439) * add changelog Co-authored-by: liorbond <liorbond@gmail.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit c835d46 Author: Jacob Gadikian <jacobgadikian@gmail.com> Date: Mon Aug 22 04:30:00 2022 +0700 Update Makefile (cosmos#12982) formatting commit 7ee9e6d Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Aug 19 18:26:49 2022 +0200 docs(cli): improve --gas flag description (cosmos#12913) (cosmos#12965) * docs(cli): improve --gas flag description * Update client/flags/flags.go Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> * fix sprintf Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> (cherry picked from commit f430528) Co-authored-by: Robert Zaremba <robert@zaremba.ch> commit f31c795 Author: Julien Robert <julien@rbrt.fr> Date: Fri Aug 19 18:26:07 2022 +0200 chore: bump tendermint to `0.34.21` and iavl to `0.19.1` (cosmos#12969) * chore: bump tendermint to `0.34.21` and iavl to `0.19.1` * update changelog commit 32c9075 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:34:32 2022 -0400 fix: the occasional staking module `SimulateMsgCancelUnbondingDelegate` failure (backport cosmos#12933) (cosmos#12962) commit d2a5018 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:34:09 2022 -0400 feat: deterministic map iteration (backport cosmos#12781) (cosmos#12943) commit f3c1d8c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:33:52 2022 -0400 perf: Amortize clearing unsorted cache entries (Juno genesis fix) (backport cosmos#12885) (cosmos#12960) commit 629b3b9 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 11 10:32:48 2022 -0400 fix: move downgrade verification after store migration (cosmos#12906) (cosmos#12907) commit d74d102 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 10 16:16:53 2022 +0200 fix(x/group): propagate events correctly to current context (backport cosmos#12888) (cosmos#12890) * fix(x/group): propagate events correctly to current context (cosmos#12888) * fix(x/groups) propagate events correctly to current context * update to use current context on logger * adding changelog entry Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> (cherry picked from commit 014bfae) # Conflicts: # CHANGELOG.md * fix conflicts Co-authored-by: Damian Nolan <damiannolan@gmail.com> Co-authored-by: Amaury M <1293565+amaurym@users.noreply.github.com> commit 5caee00 Author: Robert Zaremba <robert@zaremba.ch> Date: Wed Aug 10 10:02:13 2022 +0200 chore: bump math (cosmos#12877) * chore: bump math package * changelog commit 69c88ad Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 8 17:22:58 2022 -0400 chore: changelog update (backport cosmos#12859) (cosmos#12861) commit e5b974c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 8 15:13:12 2022 -0400 chore: fee payer event (cosmos#12850) (cosmos#12855) commit 137bd03 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sun Aug 7 22:39:42 2022 +0200 Update REST endpoints for group module documentation (cosmos#12839) (cosmos#12840) (cherry picked from commit cfed17e) Co-authored-by: lg <8335464+glnro@users.noreply.github.com> commit 2b616fb Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sun Aug 7 09:43:59 2022 -0400 fix(docs): typo in staking/state (cosmos#12834) (cosmos#12835) (cherry picked from commit fe89212) Co-authored-by: Ari Rubinstein <arirubinstein@users.noreply.github.com> commit 1890b8b Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 2 10:26:49 2022 +0200 feat: Add GetParamSetIfExists to prevent panic on breaking param changes (backport cosmos#12615) (cosmos#12792) * feat: Add GetParamSetIfExists to prevent panic on breaking param changes (cosmos#12615) * imp(params): Add GetParamSetIfExists to prevent panic on breaking param changes * changelog * test Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit 2932e11) # Conflicts: # CHANGELOG.md * Update CHANGELOG.md Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Marko <marbar3778@yahoo.com> commit 04e7ab1 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Jul 27 16:46:05 2022 +0200 feat: Add convenience method for constructing key to access account's balance for a given denom (backport cosmos#12674) (cosmos#12744) * feat: Add convenience method for constructing key to access account's balance for a given denom (cosmos#12674) This PR adds a convenience method for constructing the key necessary to query for the account's balance of a given denom. I ran into this issue since we are using ABCI query now to perform balance requests because we are also requesting merkle proofs for the returned balance [here](https://github.com/celestiaorg/celestia-node/pull/911/files#diff-0ee31f5a7bd88e9f758e6bebdf3ee36365519e55a451098d9638c39afe5eac42R144). It would be nice to have a definitive convenience method for constructing the key. [Ref.](github.com/celestiaorg/celestia-node/pull/911) (cherry picked from commit a1777a8) * updates changelog Co-authored-by: rene <41963722+renaynay@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
* Merged v0.46.2 into release-pio/v0.46.x. Squashed commit of the following: commit 26786a0 Author: Julien Robert <julien@rbrt.fr> Date: Mon Oct 3 18:13:53 2022 +0200 chore: prepare `v0.46.2` release (cosmos#13436) commit 72a904d Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 30 18:16:51 2022 -0400 fix: add close for grpcOnly mode (backport cosmos#13418) (cosmos#13422) commit f80e883 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Sep 29 08:10:41 2022 -0500 fix: add gRPC nil/zero check in query (backport cosmos#13352) (cosmos#13417) * fix: add gRPC nil/zero check in query (cosmos#13352) (cherry picked from commit a9f02d9) # Conflicts: # CHANGELOG.md # codec/proto_codec_test.go * fix conflicts * fix conflicts Co-authored-by: yihuang <huang@crypto.com> commit 51c8a1a Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 27 07:48:21 2022 -0500 feat: Add notice for possible iavl fast node migration (backport cosmos#13390) (cosmos#13398) * add notice for possible iavl fast node migration (cosmos#13390) (cherry picked from commit b609105) * Update baseapp/baseapp.go Co-authored-by: adu-crypto <94821467+adu-crypto@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 95948f6 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 14:26:27 2022 -0500 perf: reduce user's password prompts when calling keyring List function (backport cosmos#13207) (cosmos#13368) * perf: reduce user's password prompts when calling keyring List function (cosmos#13207) * Reduce user password prompts by taking advantage of the already existing MigrateAll function * Print message when no records were found on the keyring * Update changelog * Fix migration test * Add keys sort (cherry picked from commit 4882f93) # Conflicts: # CHANGELOG.md * fix conflicts * suggestions Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Ezequiel Raynaudo <raynaudo.ee@gmail.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> commit c351441 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 08:26:34 2022 -0500 docs: guidelines for proto message's String() method (cosmos#13364) (cosmos#13366) (cherry picked from commit 8dd708d) Co-authored-by: likhita-809 <78951027+likhita-809@users.noreply.github.com> commit 72f8923 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 23 08:16:20 2022 -0500 feat: add `draft-proposal` for x/group (backport cosmos#13353) (cosmos#13359) * feat: add `draft-proposal` for x/group (cosmos#13353) * feat: add `draft-proposal` for x/group * add changelog * extract useful function * add `GetMsgFromTypeURL` tests (cherry picked from commit 7eb259f) # Conflicts: # CHANGELOG.md # types/tx_msg.go # x/gov/client/cli/prompt.go * fix conflicts * fix whitespace * backport cosmos#13350 * renaming as main * updates Co-authored-by: Julien Robert <julien@rbrt.fr> commit 9454b97 Author: Julien Robert <julien@rbrt.fr> Date: Tue Sep 20 18:02:24 2022 +0200 fix: fix buf commit (cosmos#13344) commit bbcf2f1 Author: Julien Robert <julien@rbrt.fr> Date: Tue Sep 20 17:04:54 2022 +0200 fix: fix buf unexisting repo (cosmos#13343) commit f57a110 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 16:30:54 2022 +0200 fix: ensure withdraw_rewards events are always emitted on reward withdrawal (backport cosmos#13323) (cosmos#13339) * fix: ensure withdraw_rewards events are always emitted on reward withdrawal (cosmos#13323) (cherry picked from commit c1c23a7) # Conflicts: # CHANGELOG.md # tests/integration/distribution/keeper/delegation_test.go # testutil/sims/app_helpers.go # x/distribution/keeper/delegation.go # x/distribution/keeper/delegation_test.go # x/distribution/keeper/keeper.go * fix changelog * fix conflcits Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 43f74d3 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 16:29:50 2022 +0200 feat: configurable fastnode (backport cosmos#13321) (cosmos#13337) * feat: configurable fastnode (cosmos#13321) (cherry picked from commit 412e2fc) # Conflicts: # CHANGELOG.md # fuzz/tests/store_internal_proofs_createnonmembershipproof_test.go # go.mod # go.sum # simapp/go.mod # simapp/go.sum # tests/go.mod # tests/go.sum * fix conflicts * test fix build * test fix build * fix typo * fix replace Co-authored-by: Marko <marbar3778@yahoo.com> commit 6c8614c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Sep 20 10:40:42 2022 +0200 fix: streaming listeners are not called for deliver tx event (backport cosmos#13334) (cosmos#13336) * fix: streaming listeners are not called for deliver tx event (cosmos#13334) * Problem: streaming listeners are not called for deliver tx event it was removed accidentally, add back. * Update CHANGELOG.md * try to fix e2e test by wait for one more block (cherry picked from commit 822900b) # Conflicts: # CHANGELOG.md # x/auth/tx/service_test.go * Update CHANGELOG.md * Update x/auth/tx/service_test.go * Update x/auth/tx/service_test.go Co-authored-by: yihuang <huang@crypto.com> commit 100db2e Author: Julien Robert <julien@rbrt.fr> Date: Mon Sep 19 16:00:44 2022 +0200 fix: remove community-pool-spend from draft-cli prompt (cosmos#13330) commit ef0f19c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Sep 19 13:35:08 2022 +0000 feat: CLI tooling to generate proposal JSONs (backport cosmos#13304) (cosmos#13328) * feat: CLI tooling to generate proposal JSONs (cosmos#13304) (cherry picked from commit 7252f4a) # Conflicts: # CHANGELOG.md # api/cosmos/nft/v1beta1/tx.pulsar.go # go.mod # go.sum # simapp/go.mod # simapp/go.sum # tests/go.mod # tests/go.sum # x/gov/README.md # x/group/spec/05_client.md * fix changelog * remove unnecessary addition * updates * fix docs * updates Co-authored-by: Julien Robert <julien@rbrt.fr> commit c524571 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 16 16:03:13 2022 +0200 fix: keep the balance query endpoint compatible with legacy blocks (backport cosmos#13301) (cosmos#13318) * fix: keep the balance query endpoint compatible with legacy blocks (cosmos#13301) * keep the balance query endpoint compatible with legacy blocks Closes: cosmos#13296 A temporary solution before the proxy tool developed, since the balance endpoint is too important. * Update CHANGELOG.md * Apply suggestions from code review Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit 6c4f94b) # Conflicts: # CHANGELOG.md # x/bank/keeper/view.go * Apply suggestions from code review * fix lint Co-authored-by: yihuang <huang@crypto.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 51a9014 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Sep 15 16:43:38 2022 +0200 fix: types: correctly coalesce coins even with repeated denominations & simplify logic (backport cosmos#13265) (cosmos#13302) * fix: types: correctly coalesce coins even with repeated denominations & simplify logic (cosmos#13265) (cherry picked from commit 83f88a6) # Conflicts: # types/coin_test.go * fix conflict * add changelog Co-authored-by: Emmanuel T Odeke <emmanuel@orijtech.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit ac4a066 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 10:56:13 2022 +0200 feat: add more coins after add-genesis-account is made (backport cosmos#13233) (cosmos#13261) * feat: add more coins after add-genesis-account is made (cosmos#13233) (cherry picked from commit c32493a) # Conflicts: # CHANGELOG.md * updates Co-authored-by: Reece Williams <31943163+Reecepbcups@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 78336ef Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 09:08:25 2022 +0200 fix: sequence in `sign-batch` (backport cosmos#13200) (cosmos#13263) commit 77fcbbd Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Sep 14 08:50:45 2022 +0200 docs: adds gov groups metadata spec (cosmos#13118) (cosmos#13264) commit 70943c6 Author: Julien Robert <julien@rbrt.fr> Date: Mon Sep 12 15:07:18 2022 +0200 chore: pin version of golangci-lint (cosmos#13245) commit 25e7f9b Author: Jacob Gadikian <jacobgadikian@gmail.com> Date: Mon Sep 12 15:35:06 2022 +0700 fix: make 46's linter work (cosmos#13186) commit 8121f34 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 9 10:28:02 2022 +0200 fix: Add withdraw proposal cmd to group's CLI tx cmds (backport cosmos#13214) (cosmos#13216) commit 095c2b0 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 2 16:01:21 2022 +0200 chore: replace deprecated dgrijalva/jwt-go dep (backport cosmos#13093) (cosmos#13136) * chore: replace deprecated dgrijalva/jwt-go dep (cosmos#13093) * chore: replace deprecated dgrijalva/jwt-go dep * Update go.mod (cherry picked from commit f5f84ad) # Conflicts: # go.mod # go.sum * fix conflict Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: Julien Robert <julien@rbrt.fr> commit 9405a05 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Sep 2 07:32:08 2022 +0200 feat: Add a cli cmd to prune old states according to current settings (backport cosmos#12742) (cosmos#13119) * feat: Add a cli cmd to prune old states according to current settings (cosmos#12742) * add PruningCmd and change PruneStores signature * the mimimum default pruning interval is 10 Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit d874ace) * fix backport error Co-authored-by: adu-crypto <94821467+adu-crypto@users.noreply.github.com> Co-authored-by: adu <adu.du@crypto.com> commit a95c626 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 31 14:21:02 2022 +0200 fix: rollback command don't actually delete multistore versions (backport cosmos#11361) (cosmos#13089) * fix: rollback command don't actually delete multistore versions (cosmos#11361) * rollback command don't actually delete multistore versions Closes: cosmos#11333 - add unit tests - use LoadVersionForOverwriting - update tendermint dependency to 0.35.x release branch Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> flushMetadata after rollback Update server/rollback.go Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> fix build gofumpt * fix unit test (cherry picked from commit 51d2de5) * fix unit test * changelog * api breaking changelog Co-authored-by: yihuang <huang@crypto.com> commit 78c24eb Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 31 14:04:56 2022 +0200 fix: call `SetIAVLCacheSize` with the configured value in simapp (backport cosmos#13107) (cosmos#13108) * fix: call `SetIAVLCacheSize` with the configured value in simapp (cosmos#13107) * Call `SetIAVLCacheSize` with the configured value in simapp. * Update CHANGELOG.md (cherry picked from commit ab33342) # Conflicts: # CHANGELOG.md * Apply suggestions from code review Co-authored-by: yihuang <huang@crypto.com> commit bb190f6 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 29 11:36:24 2022 +0000 chore: bump gin-gonic dep (backport cosmos#13061) (cosmos#13062) * deps: bump gin-gonic (cosmos#13061) Co-authored-by: Julien Robert <julien@rbrt.fr> (cherry picked from commit d11196a) # Conflicts: # go.sum * fix conflicts Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: marbar3778 <marbar3778@yahoo.com> commit 1af5c72 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sat Aug 27 09:18:50 2022 +0200 feat(x/auth): Add auth sim decoder case for AccountNumberStoreKeyPrefix (backport cosmos#13048) (cosmos#13054) commit e2fe96a Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Aug 26 13:16:02 2022 -0400 feat(x/authz): Add the GetAuthorization function. (backport cosmos#13047) (cosmos#13052) * feat(x/authz): Add the GetAuthorization function. (cosmos#13047) * [13027]: Create the GetAuthorization function (in the authz module). * [13027]: Add unit tests for the new GetAuthorization function. * [13027]: Add changelog entry. (cherry picked from commit 5e4651e) # Conflicts: # CHANGELOG.md # x/authz/keeper/keeper_test.go * fix changelog * Fix failed merge. * Fix build issue introduced by merge. Co-authored-by: Daniel Wedul <github@wedul.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit b9d4ed8 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 25 15:15:13 2022 -0400 fix: missing return statement in BaseApp.Query (backport cosmos#13046) (cosmos#13049) * fix: missing return statement in BaseApp.Query (cosmos#13046) ## Description Closes: cosmos#13040 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit c73171f) # Conflicts: # CHANGELOG.md * fix conflicts Co-authored-by: Julien Robert <julien@rbrt.fr> commit 704fff5 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 25 14:30:04 2022 +0200 fix: exporting the blockParams regression (backport cosmos#13029) (cosmos#13037) * fix: exporting the blockParams regression (cosmos#13029) ## Description Closes: cosmos#13024 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [x] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [x] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [x] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit e1999e4) # Conflicts: # CHANGELOG.md # server/export_test.go * fix conflicts Co-authored-by: JayT106 <JayT106@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit cb7bdca Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 24 15:15:28 2022 -0400 ci: fix release notes not populated by goreleaser (backport cosmos#12919) (cosmos#13018) * ci: fix release notes not populated by goreleaser (cherry picked from commit c670fec) # Conflicts: # cosmovisor/go.mod # cosmovisor/go.sum # go.work.sum * updates * revert Co-authored-by: Julien Robert <julien@rbrt.fr> commit 252c673 Author: Julien Robert <julien@rbrt.fr> Date: Wed Aug 24 17:43:33 2022 +0200 chore: v0.46.1 release changelog (cosmos#13011) * chore: v0.46.1 release changelog * updates * updates commit 60e6274 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 24 16:45:44 2022 +0200 feat: Change the default priority mechanism to be based on gas price (backport cosmos#12953) (cosmos#13006) * feat: Change the default priority mechanism to be based on gas price (cosmos#12953) (cherry picked from commit befd816) # Conflicts: # CHANGELOG.md # x/auth/ante/fee_test.go * fix conflict Co-authored-by: yihuang <huang@crypto.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit afb3def Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 23 14:54:38 2022 -0400 docs: improve UPGRADING.md instructions for v0.46.0 (backport cosmos#12646) (cosmos#13004) * docs: improve UPGRADING.md instructions for v0.46.0 (cosmos#12646) ## Description This PR is aimed to improve further the UGPRADING.md for v0.46.0. We've merged cosmos#12477 for having concurrent work on the file. - ref cosmos#12992 and closes cosmos#12991 - closes cosmos#12963 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) (cherry picked from commit c76a00b) # Conflicts: # .gitignore # CHANGELOG.md # Makefile # UPGRADING.md * fix conflict Co-authored-by: Julien Robert <julien@rbrt.fr> commit 90ef369 Author: Sai Kumar <17549398+gsk967@users.noreply.github.com> Date: Tue Aug 23 20:01:13 2022 +0530 fix: fix the gov proposals (cosmos#13002) commit d3d4675 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 23 14:11:23 2022 +0200 fix: proper error when parsing telemetry configuration (backport cosmos#12981) (cosmos#12998) * fix: proper error when parsing telemetry configuration (cosmos#12981) When parsing `telemetry.global-labels` config the code assumes that the type will be an array. I saw an issue where someone edited the configuration in the wrong way and got the following error: ![photo_2022-08-21_08-02-21](https://user-images.githubusercontent.com/22855163/185793842-c5759a54-1860-4dd1-bdb4-b94f4dab3c16.jpg) Instead, I suggest here to print a proper error log to indicate what the issue is. (cherry picked from commit c24c439) * add changelog Co-authored-by: liorbond <liorbond@gmail.com> Co-authored-by: Julien Robert <julien@rbrt.fr> commit c835d46 Author: Jacob Gadikian <jacobgadikian@gmail.com> Date: Mon Aug 22 04:30:00 2022 +0700 Update Makefile (cosmos#12982) formatting commit 7ee9e6d Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Fri Aug 19 18:26:49 2022 +0200 docs(cli): improve --gas flag description (cosmos#12913) (cosmos#12965) * docs(cli): improve --gas flag description * Update client/flags/flags.go Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> * fix sprintf Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> (cherry picked from commit f430528) Co-authored-by: Robert Zaremba <robert@zaremba.ch> commit f31c795 Author: Julien Robert <julien@rbrt.fr> Date: Fri Aug 19 18:26:07 2022 +0200 chore: bump tendermint to `0.34.21` and iavl to `0.19.1` (cosmos#12969) * chore: bump tendermint to `0.34.21` and iavl to `0.19.1` * update changelog commit 32c9075 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:34:32 2022 -0400 fix: the occasional staking module `SimulateMsgCancelUnbondingDelegate` failure (backport cosmos#12933) (cosmos#12962) commit d2a5018 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:34:09 2022 -0400 feat: deterministic map iteration (backport cosmos#12781) (cosmos#12943) commit f3c1d8c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 18 15:33:52 2022 -0400 perf: Amortize clearing unsorted cache entries (Juno genesis fix) (backport cosmos#12885) (cosmos#12960) commit 629b3b9 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Thu Aug 11 10:32:48 2022 -0400 fix: move downgrade verification after store migration (cosmos#12906) (cosmos#12907) commit d74d102 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Aug 10 16:16:53 2022 +0200 fix(x/group): propagate events correctly to current context (backport cosmos#12888) (cosmos#12890) * fix(x/group): propagate events correctly to current context (cosmos#12888) * fix(x/groups) propagate events correctly to current context * update to use current context on logger * adding changelog entry Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> (cherry picked from commit 014bfae) # Conflicts: # CHANGELOG.md * fix conflicts Co-authored-by: Damian Nolan <damiannolan@gmail.com> Co-authored-by: Amaury M <1293565+amaurym@users.noreply.github.com> commit 5caee00 Author: Robert Zaremba <robert@zaremba.ch> Date: Wed Aug 10 10:02:13 2022 +0200 chore: bump math (cosmos#12877) * chore: bump math package * changelog commit 69c88ad Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 8 17:22:58 2022 -0400 chore: changelog update (backport cosmos#12859) (cosmos#12861) commit e5b974c Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Mon Aug 8 15:13:12 2022 -0400 chore: fee payer event (cosmos#12850) (cosmos#12855) commit 137bd03 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sun Aug 7 22:39:42 2022 +0200 Update REST endpoints for group module documentation (cosmos#12839) (cosmos#12840) (cherry picked from commit cfed17e) Co-authored-by: lg <8335464+glnro@users.noreply.github.com> commit 2b616fb Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Sun Aug 7 09:43:59 2022 -0400 fix(docs): typo in staking/state (cosmos#12834) (cosmos#12835) (cherry picked from commit fe89212) Co-authored-by: Ari Rubinstein <arirubinstein@users.noreply.github.com> commit 1890b8b Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Tue Aug 2 10:26:49 2022 +0200 feat: Add GetParamSetIfExists to prevent panic on breaking param changes (backport cosmos#12615) (cosmos#12792) * feat: Add GetParamSetIfExists to prevent panic on breaking param changes (cosmos#12615) * imp(params): Add GetParamSetIfExists to prevent panic on breaking param changes * changelog * test Co-authored-by: Marko <marbar3778@yahoo.com> (cherry picked from commit 2932e11) # Conflicts: # CHANGELOG.md * Update CHANGELOG.md Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Marko <marbar3778@yahoo.com> commit 04e7ab1 Author: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Date: Wed Jul 27 16:46:05 2022 +0200 feat: Add convenience method for constructing key to access account's balance for a given denom (backport cosmos#12674) (cosmos#12744) * feat: Add convenience method for constructing key to access account's balance for a given denom (cosmos#12674) This PR adds a convenience method for constructing the key necessary to query for the account's balance of a given denom. I ran into this issue since we are using ABCI query now to perform balance requests because we are also requesting merkle proofs for the returned balance [here](https://github.com/celestiaorg/celestia-node/pull/911/files#diff-0ee31f5a7bd88e9f758e6bebdf3ee36365519e55a451098d9638c39afe5eac42R144). It would be nice to have a definitive convenience method for constructing the key. [Ref.](github.com/celestiaorg/celestia-node/pull/911) (cherry picked from commit a1777a8) * updates changelog Co-authored-by: rene <41963722+renaynay@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr> * Update changelog. * Update changelog entry with link to PR. * Standardize the link text for PRs and issues. * Fix a few lint complaints.
…ckport cosmos#12885) (cosmos#12961) * perf: Amortize clearing unsorted cache entries (Juno genesis fix) (cosmos#12885) This change fixes a bounty by the Juno team. Juno's invariant checks took 10 hours during their most recent chain halt. This PR cuts that down to 30 seconds. See https://github.com/CosmosContracts/bounties#improve-speed-of-invariant-checks. The root problem is deep in the `can-withdraw` invariant check, which calls this repeatedly: https://github.com/cosmos/cosmos-sdk/blob/main/x/distribution/keeper/store.go#L337. Iterators have a chain of parents and in this case creates an iterator from the `cachekv` store. For the genesis file, it has a cache of 500,000+ unsorted entries, which are sorted as strings here: https://github.com/cosmos/cosmos-sdk/blob/main/store/cachekv/store.go#L314. Each delegation from `can-withdraw` uses this cache and many of the cache checks miss or are a very small range. This means very few entries get removed from the unsorted cache and they have to be re-sorted on the next call. With a full cache it takes about 180ms on my machine to sort them. This change introduce a minimum number of entries that will get processed and removed from the unsorted list. It's set at the same value that directs the code to sort them in the first place. This ensures the unsorted values get removed in a relative short amount of time, and amortizes the cost to ensure an individual check does not have to process the entire cache. ## Benchmarks On running the benchmarks included in this change produces: ```shell name old time/op new time/op delta LargeUnsortedMisses-32 21.2s ± 9% 0.0s ± 1% -99.91% (p=0.000 n=20+17) name old alloc/op new alloc/op delta LargeUnsortedMisses-32 1.64GB ± 0% 0.00GB ± 0% -99.83% (p=0.000 n=19+19) name old allocs/op new allocs/op delta LargeUnsortedMisses-32 20.0k ± 0% 41.1k ± 0% +105.23% (p=0.000 n=19+20) ``` ## Invariant checks results This is what the invariant checks for Juno look like with this change (on a Hetzner AX101): ```shell INF starting node with ABCI Tendermint in-process 4:11PM INF Starting multiAppConn service impl=multiAppConn module=proxy 4:11PM INF Starting localClient service connection=query impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=snapshot impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=mempool impl=localClient module=abci-client 4:11PM INF Starting localClient service connection=consensus impl=localClient module=abci-client 4:11PM INF Starting EventBus service impl=EventBus module=events 4:11PM INF Starting PubSub service impl=PubSub module=pubsub 4:11PM INF Starting IndexerService service impl=IndexerService module=txindex 4:11PM INF ABCI Handshake App Info hash= height=0 module=consensus protocol-version=0 software-version=v9.0.0-36-g8fd6f16 4:11PM INF ABCI Replay Blocks appHeight=0 module=consensus stateHeight=0 storeHeight=0 4:12PM INF asserting crisis invariants inv=1/11 module=x/crisis name=gov/module-account 4:12PM INF asserting crisis invariants inv=2/11 module=x/crisis name=distribution/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=3/11 module=x/crisis name=distribution/can-withdraw 4:12PM INF asserting crisis invariants inv=4/11 module=x/crisis name=distribution/reference-count 4:12PM INF asserting crisis invariants inv=5/11 module=x/crisis name=distribution/module-account 4:12PM INF asserting crisis invariants inv=6/11 module=x/crisis name=bank/nonnegative-outstanding 4:12PM INF asserting crisis invariants inv=7/11 module=x/crisis name=bank/total-supply 4:12PM INF asserting crisis invariants inv=8/11 module=x/crisis name=staking/module-accounts 4:12PM INF asserting crisis invariants inv=9/11 module=x/crisis name=staking/nonnegative-power 4:12PM INF asserting crisis invariants inv=10/11 module=x/crisis name=staking/positive-delegation 4:12PM INF asserting crisis invariants inv=11/11 module=x/crisis name=staking/delegator-shares 4:12PM INF asserted all invariants duration=28383.559601 height=4136532 module=x/crisis ``` ## Alternatives There is another PR which fixes this problem for the Juno genesis file cosmos#12886. However, because of its concurrent nature, it happens to hit a large range relatively early, clearing the unsorted entries and allowing the rest of the checks to not sort it. (cherry picked from commit 4fc1f73) # Conflicts: # CHANGELOG.md * fix conflict Co-authored-by: blazeroni <blazeroni@gmail.com> Co-authored-by: Julien Robert <julien@rbrt.fr> Co-authored-by: Marko <marbar3778@yahoo.com>
This change fixes a bounty by the Juno team. Juno's invariant checks took 10 hours during their most recent chain halt. This PR cuts that down to 30 seconds. See https://github.com/CosmosContracts/bounties#improve-speed-of-invariant-checks.
The root problem is deep in the
can-withdraw
invariant check, which calls this repeatedly: https://github.com/cosmos/cosmos-sdk/blob/main/x/distribution/keeper/store.go#L337. Iterators have a chain of parents and in this case creates an iterator from thecachekv
store. For the genesis file, it has a cache of 500,000+ unsorted entries, which are sorted as strings here: https://github.com/cosmos/cosmos-sdk/blob/main/store/cachekv/store.go#L314. Each delegation fromcan-withdraw
uses this cache and many of the cache checks miss or are a very small range. This means very few entries get removed from the unsorted cache and they have to be re-sorted on the next call. With a full cache it takes about 180ms on my machine to sort them.This change introduce a minimum number of entries that will get processed and removed from the unsorted list. It's set at the same value that directs the code to sort them in the first place. This ensures the unsorted values get removed in a relative short amount of time, and amortizes the cost to ensure an individual check does not have to process the entire cache.
Benchmarks
On running the benchmarks included in this change produces:
Invariant checks results
This is what the invariant checks for Juno look like with this change (on a Hetzner AX101):
Alternatives
There is another PR which fixes this problem for the Juno genesis file #12886. However, because of its concurrent nature, it happens to hit a large range relatively early, clearing the unsorted entries and allowing the rest of the checks to not sort it.