Skip to content
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

Merged
merged 10 commits into from
Aug 18, 2022
Merged

perf: Amortize clearing unsorted cache entries (Juno genesis fix) #12885

merged 10 commits into from
Aug 18, 2022

Conversation

blazeroni
Copy link
Contributor

@blazeroni blazeroni commented Aug 10, 2022

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:

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):

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.

@github-actions github-actions bot added the C:x/distribution distribution module related label Aug 10, 2022
@blazeroni blazeroni changed the title fix: Juno genesis performance perf: Juno genesis performance Aug 10, 2022
@blazeroni blazeroni changed the title perf: Juno genesis performance perf: Juno genesis Aug 10, 2022
@github-actions github-actions bot added C:Store and removed C:x/distribution distribution module related labels Aug 11, 2022
@blazeroni
Copy link
Contributor Author

blazeroni commented Aug 11, 2022

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

@blazeroni blazeroni changed the title perf: Juno genesis perf: Amortize clearing unsorted cache entries (Juno genesis fix) Aug 11, 2022
@blazeroni
Copy link
Contributor Author

@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.

@blazeroni blazeroni marked this pull request as ready for review August 11, 2022 23:42
@blazeroni blazeroni requested a review from a team as a code owner August 11, 2022 23:42
@blazeroni
Copy link
Contributor Author

Added a benchmark which illustrates the problem. Finishes in a few seconds with the changes in the PR. Takes minutes without it.

Copy link
Collaborator

@odeke-em odeke-em left a 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

store/cachekv/search_benchmark_test.go Outdated Show resolved Hide resolved
store/cachekv/store.go Outdated Show resolved Hide resolved
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)
@blazeroni
Copy link
Contributor Author

@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.

@joeabbey
Copy link
Contributor

joeabbey commented Aug 16, 2022

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 genesis.json improves.

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.

Copy link
Member

@kocubinski kocubinski left a 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?

@blazeroni
Copy link
Contributor Author

@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!

Copy link
Collaborator

@odeke-em odeke-em left a 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.

Copy link
Collaborator

@odeke-em odeke-em left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@codecov
Copy link

codecov bot commented Aug 16, 2022

Codecov Report

Merging #12885 (e2acc3f) into main (8e9e330) will decrease coverage by 1.00%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            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     
Impacted Files Coverage Δ
store/cachekv/store.go 86.87% <100.00%> (+0.25%) ⬆️
orm/model/ormdb/file.go
orm/model/ormtable/index_impl.go
orm/model/ormdb/json.go
db/memdb/db.go
orm/model/ormtable/singleton.go
orm/model/ormtable/filter.go
orm/model/ormtable/table_impl.go
db/memdb/iterator.go
orm/encoding/ormfield/enum.go
... and 41 more

@@ -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
Copy link
Contributor

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?

Copy link
Contributor

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 :)

Copy link
Contributor Author

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.

Copy link
Contributor Author

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.

@alexanderbez alexanderbez added the A:automerge Automatically merge PR once all prerequisites pass. label Aug 18, 2022
@alexanderbez
Copy link
Contributor

@marbar3778 do we want this backported?

@tac0turtle
Copy link
Member

@marbar3778 do we want this backported?

would be nice. I cant see why its not backwards compatible

@alexanderbez alexanderbez added backport/0.45.x backport/0.46.x PR scheduled for inclusion in the v0.46's next stable release labels Aug 18, 2022
@mergify mergify bot merged commit 4fc1f73 into cosmos:main Aug 18, 2022
mergify bot pushed a commit that referenced this pull request Aug 18, 2022
…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
mergify bot pushed a commit that referenced this pull request Aug 18, 2022
…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
tac0turtle added a commit that referenced this pull request Aug 19, 2022
…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>
SpicyLemon added a commit to provenance-io/cosmos-sdk that referenced this pull request Oct 3, 2022
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>
SpicyLemon added a commit to provenance-io/cosmos-sdk that referenced this pull request Oct 3, 2022
* 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.
JeancarloBarrios pushed a commit to agoric-labs/cosmos-sdk that referenced this pull request Sep 28, 2024
…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>
JeancarloBarrios pushed a commit to agoric-labs/cosmos-sdk that referenced this pull request Sep 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A:automerge Automatically merge PR once all prerequisites pass. backport/0.46.x PR scheduled for inclusion in the v0.46's next stable release C:Store
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants