From e93a467086d4b25f38632483ed6b2760867c0d2a Mon Sep 17 00:00:00 2001 From: GNaD13 <89174180+GNaD13@users.noreply.github.com> Date: Wed, 22 Feb 2023 22:30:39 +0700 Subject: [PATCH] imp: add log message for debug error failed acknowledgement errors (#3077) * add log message for generate ack * add more log * correct message * nits * merge main * change structure of the logging * change some return error msg * nit --- modules/apps/27-interchain-accounts/host/ibc_module.go | 7 +++++++ .../apps/27-interchain-accounts/host/keeper/relay.go | 5 ++--- modules/apps/transfer/ibc_module.go | 5 +++++ modules/apps/transfer/keeper/relay.go | 10 +++++----- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/apps/27-interchain-accounts/host/ibc_module.go b/modules/apps/27-interchain-accounts/host/ibc_module.go index 5c652f19b23..153a15d3758 100644 --- a/modules/apps/27-interchain-accounts/host/ibc_module.go +++ b/modules/apps/27-interchain-accounts/host/ibc_module.go @@ -1,6 +1,8 @@ package host import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" @@ -105,7 +107,9 @@ func (im IBCModule) OnRecvPacket( packet channeltypes.Packet, _ sdk.AccAddress, ) ibcexported.Acknowledgement { + logger := im.keeper.Logger(ctx) if !im.keeper.IsHostEnabled(ctx) { + logger.Info("host submodule is disabled") return channeltypes.NewErrorAcknowledgement(types.ErrHostSubModuleDisabled) } @@ -113,6 +117,9 @@ func (im IBCModule) OnRecvPacket( ack := channeltypes.NewResultAcknowledgement(txResponse) if err != nil { ack = channeltypes.NewErrorAcknowledgement(err) + logger.Error(fmt.Sprintf("%s sequence %d", err.Error(), packet.Sequence)) + } else { + logger.Info("successfully handled packet sequence: %d", packet.Sequence) } // Emit an event indicating a successful or failed acknowledgement. diff --git a/modules/apps/27-interchain-accounts/host/keeper/relay.go b/modules/apps/27-interchain-accounts/host/keeper/relay.go index a1f082f55e1..2d3c7eafcff 100644 --- a/modules/apps/27-interchain-accounts/host/keeper/relay.go +++ b/modules/apps/27-interchain-accounts/host/keeper/relay.go @@ -25,14 +25,13 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet) ([]byt case icatypes.EXECUTE_TX: msgs, err := icatypes.DeserializeCosmosTx(k.cdc, data.Data) if err != nil { - return nil, err + return nil, sdkerrors.Wrapf(err, "failed to deserialize interchain account transaction") } txResponse, err := k.executeTx(ctx, packet.SourcePort, packet.DestinationPort, packet.DestinationChannel, msgs) if err != nil { - return nil, err + return nil, sdkerrors.Wrapf(err, "failed to execute interchain account transaction") } - return txResponse, nil default: return nil, icatypes.ErrUnknownDataType diff --git a/modules/apps/transfer/ibc_module.go b/modules/apps/transfer/ibc_module.go index fcaff5e1ddc..b7595ca77c1 100644 --- a/modules/apps/transfer/ibc_module.go +++ b/modules/apps/transfer/ibc_module.go @@ -169,12 +169,14 @@ func (im IBCModule) OnRecvPacket( packet channeltypes.Packet, relayer sdk.AccAddress, ) ibcexported.Acknowledgement { + logger := im.keeper.Logger(ctx) ack := channeltypes.NewResultAcknowledgement([]byte{byte(1)}) var data types.FungibleTokenPacketData var ackErr error if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil { ackErr = sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "cannot unmarshal ICS-20 transfer packet data") + logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence)) ack = channeltypes.NewErrorAcknowledgement(ackErr) } @@ -185,6 +187,9 @@ func (im IBCModule) OnRecvPacket( if err != nil { ack = channeltypes.NewErrorAcknowledgement(err) ackErr = err + logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence)) + } else { + logger.Info("successfully handled ICS-20 packet sequence: %d", packet.Sequence) } } diff --git a/modules/apps/transfer/keeper/relay.go b/modules/apps/transfer/keeper/relay.go index c464b5dbbbd..18b7a095ab5 100644 --- a/modules/apps/transfer/keeper/relay.go +++ b/modules/apps/transfer/keeper/relay.go @@ -165,7 +165,7 @@ func (k Keeper) sendTransfer( func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data types.FungibleTokenPacketData) error { // validate packet data upon receiving if err := data.ValidateBasic(); err != nil { - return err + return sdkerrors.Wrapf(err, "error validating ICS-20 transfer packet data") } if !k.GetReceiveEnabled(ctx) { @@ -175,13 +175,13 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t // decode the receiver address receiver, err := sdk.AccAddressFromBech32(data.Receiver) if err != nil { - return err + return sdkerrors.Wrapf(err, "failed to decode receiver address: %s", data.Receiver) } // parse the transfer amount transferAmount, ok := sdk.NewIntFromString(data.Amount) if !ok { - return sdkerrors.Wrapf(types.ErrInvalidAmount, "unable to parse transfer amount (%s) into math.Int", data.Amount) + return sdkerrors.Wrapf(types.ErrInvalidAmount, "unable to parse transfer amount: %s", data.Amount) } labels := []metrics.Label{ @@ -279,14 +279,14 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t if err := k.bankKeeper.MintCoins( ctx, types.ModuleName, sdk.NewCoins(voucher), ); err != nil { - return err + return sdkerrors.Wrapf(err, "failed to mint IBC tokens") } // send to receiver if err := k.bankKeeper.SendCoinsFromModuleToAccount( ctx, types.ModuleName, receiver, sdk.NewCoins(voucher), ); err != nil { - return err + return sdkerrors.Wrapf(err, "failed to send coins to receiver %s", receiver.String()) } defer func() {