diff --git a/.golangci.yml b/.golangci.yml index 6c65f9d855..20fadf2617 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -24,6 +24,7 @@ linters: enable: - dogsled - errcheck + - errorlint - exportloopref - gci - goconst diff --git a/crypto/armor.go b/crypto/armor.go index d7bebe96e1..ac84ca6b5b 100644 --- a/crypto/armor.go +++ b/crypto/armor.go @@ -262,15 +262,15 @@ func EncodeArmor(blockType string, headers map[string]string, data []byte) strin buf := new(bytes.Buffer) w, err := armor.Encode(buf, blockType, headers) if err != nil { - panic(fmt.Errorf("could not encode ascii armor: %v", err)) + panic(fmt.Errorf("could not encode ascii armor: %w", err)) } _, err = w.Write(data) if err != nil { - panic(fmt.Errorf("could not encode ascii armor: %v", err)) + panic(fmt.Errorf("could not encode ascii armor: %w", err)) } err = w.Close() if err != nil { - panic(fmt.Errorf("could not encode ascii armor: %v", err)) + panic(fmt.Errorf("could not encode ascii armor: %w", err)) } return buf.String() } diff --git a/math/uint.go b/math/uint.go index 92f0453b1a..b780633ef4 100644 --- a/math/uint.go +++ b/math/uint.go @@ -39,7 +39,7 @@ func (u Uint) IsNil() bool { func NewUintFromBigInt(i *big.Int) Uint { u, err := checkNewUint(i) if err != nil { - panic(fmt.Errorf("overflow: %s", err)) + panic(fmt.Errorf("overflow: %w", err)) } return u } diff --git a/server/start.go b/server/start.go index ea0e43d313..6f4f3eaf52 100644 --- a/server/start.go +++ b/server/start.go @@ -823,11 +823,11 @@ func testnetify[T types.Application](ctx *Context, testnetAppCreator types.AppCr _, _, _, _, _, proxyMetrics, _, _ := metrics(genDoc.ChainID) // nolint: dogsled // function from comet proxyApp := proxy.NewAppConns(clientCreator, proxyMetrics) if err := proxyApp.Start(); err != nil { - return nil, fmt.Errorf("error starting proxy app connections: %v", err) + return nil, fmt.Errorf("error starting proxy app connections: %w", err) } res, err := proxyApp.Query().Info(context, proxy.InfoRequest) if err != nil { - return nil, fmt.Errorf("error calling Info: %v", err) + return nil, fmt.Errorf("error calling Info: %w", err) } err = proxyApp.Stop() if err != nil { diff --git a/server/v2/appmanager/config.go b/server/v2/appmanager/config.go index 8101a47ae8..ae52849bf2 100644 --- a/server/v2/appmanager/config.go +++ b/server/v2/appmanager/config.go @@ -3,7 +3,7 @@ package appmanager // Config represents the configuration options for the app manager. // TODO: implement comments for toml type Config struct { - ValidateTxGasLimit uint64 `mapstructure:"validate-tx-gas-limit"` //TODO: check how this works on app mempool + ValidateTxGasLimit uint64 `mapstructure:"validate-tx-gas-limit"` // TODO: check how this works on app mempool QueryGasLimit uint64 `mapstructure:"query-gas-limit"` SimulationGasLimit uint64 `mapstructure:"simulation-gas-limit"` } diff --git a/simapp/app.go b/simapp/app.go index 821a17d981..e1c2254b15 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -553,7 +553,7 @@ func NewSimApp( unorderedtx.NewSnapshotter(app.UnorderedTxManager), ) if err != nil { - panic(fmt.Errorf("failed to register snapshot extension: %s", err)) + panic(fmt.Errorf("failed to register snapshot extension: %w", err)) } } diff --git a/simapp/app_di.go b/simapp/app_di.go index 1a850e391d..eab4f0110f 100644 --- a/simapp/app_di.go +++ b/simapp/app_di.go @@ -292,7 +292,7 @@ func NewSimApp( unorderedtx.NewSnapshotter(app.UnorderedTxManager), ) if err != nil { - panic(fmt.Errorf("failed to register snapshot extension: %s", err)) + panic(fmt.Errorf("failed to register snapshot extension: %w", err)) } } diff --git a/store/v2/storage/sqlite/iterator.go b/store/v2/storage/sqlite/iterator.go index f786275a4c..daf7e073db 100644 --- a/store/v2/storage/sqlite/iterator.go +++ b/store/v2/storage/sqlite/iterator.go @@ -167,7 +167,7 @@ func (itr *iterator) parseRow() { value []byte ) if err := itr.rows.Scan(&key, &value); err != nil { - itr.err = fmt.Errorf("failed to scan row: %s", err) + itr.err = fmt.Errorf("failed to scan row: %w", err) itr.valid = false return } diff --git a/tests/systemtests/system.go b/tests/systemtests/system.go index 308d4426ad..deb19a396f 100644 --- a/tests/systemtests/system.go +++ b/tests/systemtests/system.go @@ -935,18 +935,18 @@ func copyFile(src, dest string) (*os.File, error) { func copyFilesInDir(src, dest string) error { err := os.MkdirAll(dest, 0o750) if err != nil { - return fmt.Errorf("mkdirs: %s", err) + return fmt.Errorf("mkdirs: %w", err) } fs, err := os.ReadDir(src) if err != nil { - return fmt.Errorf("read dir: %s", err) + return fmt.Errorf("read dir: %w", err) } for _, f := range fs { if f.IsDir() { continue } if _, err := copyFile(filepath.Join(src, f.Name()), filepath.Join(dest, f.Name())); err != nil { - return fmt.Errorf("copy file: %q: %s", f.Name(), err) + return fmt.Errorf("copy file: %q: %w", f.Name(), err) } } return nil diff --git a/tools/cosmovisor/process.go b/tools/cosmovisor/process.go index 3de7a942fa..47d70e301f 100644 --- a/tools/cosmovisor/process.go +++ b/tools/cosmovisor/process.go @@ -2,6 +2,7 @@ package cosmovisor import ( "encoding/json" + "errors" "fmt" "io" "os" @@ -270,15 +271,18 @@ func (l *Launcher) doPreUpgrade() error { if err := l.executePreUpgradeCmd(); err != nil { counter++ - switch err.(*exec.ExitError).ProcessState.ExitCode() { - case 1: - l.logger.Info("pre-upgrade command does not exist. continuing the upgrade.") - return nil - case 30: - return fmt.Errorf("pre-upgrade command failed : %w", err) - case 31: - l.logger.Error("pre-upgrade command failed. retrying", "error", err, "attempt", counter) - continue + var exitErr *exec.ExitError + if errors.As(err, &exitErr) { + switch exitErr.ProcessState.ExitCode() { + case 1: + l.logger.Info("pre-upgrade command does not exist. continuing the upgrade.") + return nil + case 30: + return fmt.Errorf("pre-upgrade command failed : %w", err) + case 31: + l.logger.Error("pre-upgrade command failed. retrying", "error", err, "attempt", counter) + continue + } } } diff --git a/x/bank/keeper/genesis.go b/x/bank/keeper/genesis.go index 3f7ec88c1e..8e422e5f42 100644 --- a/x/bank/keeper/genesis.go +++ b/x/bank/keeper/genesis.go @@ -64,7 +64,7 @@ func (k BaseKeeper) InitGenesis(ctx context.Context, genState *types.GenesisStat func (k BaseKeeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) { totalSupply, _, err := k.GetPaginatedTotalSupply(ctx, &query.PageRequest{Limit: query.PaginationMaxLimit}) if err != nil { - return nil, fmt.Errorf("unable to fetch total supply %v", err) + return nil, fmt.Errorf("unable to fetch total supply %w", err) } rv := types.NewGenesisState( diff --git a/x/epochs/module.go b/x/epochs/module.go index 807e144708..d520fe0e24 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -91,7 +91,7 @@ func (am AppModule) InitGenesis(ctx context.Context, bz json.RawMessage) error { var gs types.GenesisState err := am.cdc.UnmarshalJSON(bz, &gs) if err != nil { - return (fmt.Errorf("failed to unmarshal %s genesis state: %s", types.ModuleName, err)) + return (fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err)) } return am.keeper.InitGenesis(ctx, gs) diff --git a/x/evidence/genesis.go b/x/evidence/genesis.go index 0ffe655600..ba72dab80c 100644 --- a/x/evidence/genesis.go +++ b/x/evidence/genesis.go @@ -16,7 +16,7 @@ import ( // state. func InitGenesis(ctx context.Context, k keeper.Keeper, gs *types.GenesisState) error { if err := gs.Validate(); err != nil { - return fmt.Errorf("failed to validate %s genesis state: %s", types.ModuleName, err) + return fmt.Errorf("failed to validate %s genesis state: %w", types.ModuleName, err) } for _, e := range gs.Evidence { diff --git a/x/genutil/client/testutil/helpers.go b/x/genutil/client/testutil/helpers.go index e4fc09e9ac..ecfbb3e008 100644 --- a/x/genutil/client/testutil/helpers.go +++ b/x/genutil/client/testutil/helpers.go @@ -47,7 +47,7 @@ func CreateDefaultCometConfig(rootDir string) (*cmtcfg.Config, error) { cmtcfg.EnsureRoot(rootDir) if err := conf.ValidateBasic(); err != nil { - return nil, fmt.Errorf("error in config file: %v", err) + return nil, fmt.Errorf("error in config file: %w", err) } return conf, nil diff --git a/x/group/module/module.go b/x/group/module/module.go index 92c7319b0f..42c4ede0af 100644 --- a/x/group/module/module.go +++ b/x/group/module/module.go @@ -109,7 +109,7 @@ func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error { func (am AppModule) RegisterMigrations(mr appmodule.MigrationRegistrar) error { m := keeper.NewMigrator(am.keeper) if err := mr.Register(group.ModuleName, 1, m.Migrate1to2); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %v", group.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %w", group.ModuleName, err) } return nil diff --git a/x/protocolpool/keeper/keeper.go b/x/protocolpool/keeper/keeper.go index 2d0b02bfad..5eb2ae4ec6 100644 --- a/x/protocolpool/keeper/keeper.go +++ b/x/protocolpool/keeper/keeper.go @@ -170,7 +170,7 @@ func (k Keeper) withdrawRecipientFunds(ctx context.Context, recipientAddr string withdrawnAmount := sdk.NewCoin(denom, fundsAllocated) err = k.DistributeFromStreamFunds(ctx, sdk.NewCoins(withdrawnAmount), recipient) if err != nil { - return sdk.Coin{}, fmt.Errorf("error while distributing funds to the recipient %s: %v", recipientAddr, err) + return sdk.Coin{}, fmt.Errorf("error while distributing funds to the recipient %s: %w", recipientAddr, err) } // reset fund distribution @@ -220,7 +220,7 @@ func (k Keeper) SetToDistribute(ctx context.Context, amount sdk.Coins, addr stri err = k.ToDistribute.Set(ctx, amount.AmountOf(denom)) if err != nil { - return fmt.Errorf("error while setting ToDistribute: %v", err) + return fmt.Errorf("error while setting ToDistribute: %w", err) } return nil } diff --git a/x/protocolpool/keeper/msg_server.go b/x/protocolpool/keeper/msg_server.go index 42e5821e6e..9111986318 100644 --- a/x/protocolpool/keeper/msg_server.go +++ b/x/protocolpool/keeper/msg_server.go @@ -194,7 +194,7 @@ func (k MsgServer) CancelContinuousFund(ctx context.Context, msg *types.MsgCance // withdraw funds if any are allocated withdrawnFunds, err := k.withdrawRecipientFunds(ctx, msg.RecipientAddress) if err != nil && !errorspkg.Is(err, types.ErrNoRecipientFund) { - return nil, fmt.Errorf("error while withdrawing already allocated funds for recipient %s: %v", msg.RecipientAddress, err) + return nil, fmt.Errorf("error while withdrawing already allocated funds for recipient %s: %w", msg.RecipientAddress, err) } if err := k.ContinuousFund.Remove(ctx, recipient); err != nil { diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 2ef2b7ec71..1db3cc99a2 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -834,7 +834,7 @@ func (k Keeper) Unbond( validator.TokensFromShares(delegation.Shares).TruncateInt().LT(validator.MinSelfDelegation) { err = k.jailValidator(ctx, validator) if err != nil { - return amount, fmt.Errorf("failed to jail validator: %v", err) + return amount, fmt.Errorf("failed to jail validator: %w", err) } validator, err = k.GetValidator(ctx, valbz) if err != nil { diff --git a/x/staking/keeper/genesis.go b/x/staking/keeper/genesis.go index b59bda1ad5..0bb7e7eabd 100644 --- a/x/staking/keeper/genesis.go +++ b/x/staking/keeper/genesis.go @@ -85,7 +85,7 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) ([]ap for _, delegation := range data.Delegations { delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { - return nil, fmt.Errorf("invalid delegator address: %s", err) + return nil, fmt.Errorf("invalid delegator address: %w", err) } valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr()) diff --git a/x/staking/module.go b/x/staking/module.go index ec28b212aa..a315ae1a19 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -114,19 +114,19 @@ func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error { func (am AppModule) RegisterMigrations(mr appmodule.MigrationRegistrar) error { m := keeper.NewMigrator(am.keeper) if err := mr.Register(types.ModuleName, 1, m.Migrate1to2); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %v", types.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %w", types.ModuleName, err) } if err := mr.Register(types.ModuleName, 2, m.Migrate2to3); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 2 to 3: %v", types.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 2 to 3: %w", types.ModuleName, err) } if err := mr.Register(types.ModuleName, 3, m.Migrate3to4); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 3 to 4: %v", types.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 3 to 4: %w", types.ModuleName, err) } if err := mr.Register(types.ModuleName, 4, m.Migrate4to5); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 4 to 5: %v", types.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 4 to 5: %w", types.ModuleName, err) } if err := mr.Register(types.ModuleName, 5, m.Migrate5to6); err != nil { - return fmt.Errorf("failed to migrate x/%s from version 5 to 6: %v", types.ModuleName, err) + return fmt.Errorf("failed to migrate x/%s from version 5 to 6: %w", types.ModuleName, err) } return nil