Skip to content

Commit 5581f7f

Browse files
authored
fix: correctly propagate msg errors in gov (cosmos#13918)
* fix: correctly propagate msg errors in gov * chore: update changelog * fix: correctly check proposal status in tests * chore: delete unused var
1 parent eb4afa7 commit 5581f7f

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ extension interfaces. `module.Manager.Modules` is now of type `map[string]interf
195195
* (snapshot) [#13400](https://github.com/cosmos/cosmos-sdk/pull/13400) Fix snapshot checksum issue in golang 1.19.
196196
* (server) [#13778](https://github.com/cosmos/cosmos-sdk/pull/13778) Set Cosmos SDK default endpoints to localhost to avoid unknown exposure of endpoints.
197197
* (x/auth) [#13877](https://github.com/cosmos/cosmos-sdk/pull/13877) Handle missing account numbers during `InitGenesis`.
198+
* (x/gov) [#13918](https://github.com/cosmos/cosmos-sdk/pull/13918) Fix propagation of message errors when executing a proposal.
198199

199200
### Deprecated
200201

x/gov/abci.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) {
7272
if err == nil {
7373
for idx, msg = range messages {
7474
handler := keeper.Router().Handler(msg)
75-
res, err := handler(cacheCtx, msg)
75+
76+
var res *sdk.Result
77+
res, err = handler(cacheCtx, msg)
7678
if err != nil {
7779
break
7880
}

x/gov/abci_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111

1212
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
1313
sdk "github.com/cosmos/cosmos-sdk/types"
14+
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
15+
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
1416
"github.com/cosmos/cosmos-sdk/x/gov"
1517
"github.com/cosmos/cosmos-sdk/x/gov/keeper"
1618
"github.com/cosmos/cosmos-sdk/x/gov/types"
@@ -347,10 +349,8 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) {
347349
createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10})
348350
staking.EndBlocker(ctx, suite.StakingKeeper)
349351

350-
// Create a proposal where the handler will pass for the test proposal
351-
// because the value of contextKeyBadProposal is true.
352-
ctx = ctx.WithValue(contextKeyBadProposal, true)
353-
proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "")
352+
msg := banktypes.NewMsgSend(authtypes.NewModuleAddress(types.ModuleName), addrs[0], sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000))))
353+
proposal, err := suite.GovKeeper.SubmitProposal(ctx, []sdk.Msg{msg}, "")
354354
require.NoError(t, err)
355355

356356
proposalCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10)))
@@ -368,12 +368,12 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) {
368368
newHeader.Time = ctx.BlockHeader().Time.Add(*suite.GovKeeper.GetParams(ctx).MaxDepositPeriod).Add(*suite.GovKeeper.GetParams(ctx).VotingPeriod)
369369
ctx = ctx.WithBlockHeader(newHeader)
370370

371-
// Set the contextKeyBadProposal value to false so that the handler will fail
372-
// during the processing of the proposal in the EndBlocker.
373-
ctx = ctx.WithValue(contextKeyBadProposal, false)
374-
375371
// validate that the proposal fails/has been rejected
376372
gov.EndBlocker(ctx, suite.GovKeeper)
373+
374+
proposal, ok := suite.GovKeeper.GetProposal(ctx, proposal.Id)
375+
require.True(t, ok)
376+
require.Equal(t, v1.StatusFailed, proposal.Status)
377377
}
378378

379379
func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx sdk.Context, addrs []sdk.ValAddress, powerAmt []int64) {

x/gov/common_test.go

-2
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ func SortByteArrays(src [][]byte) [][]byte {
9191
return sorted
9292
}
9393

94-
const contextKeyBadProposal = "contextKeyBadProposal"
95-
9694
var pubkeys = []cryptotypes.PubKey{
9795
ed25519.GenPrivKey().PubKey(),
9896
ed25519.GenPrivKey().PubKey(),

0 commit comments

Comments
 (0)