Skip to content

Commit

Permalink
do not reject err ack
Browse files Browse the repository at this point in the history
  • Loading branch information
danwt committed Dec 10, 2024
1 parent 0f642ab commit 95f1b41
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions x/hub-genesis/keeper/ibc_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ func (w IBCModule) OnAcknowledgementPacket(
packet channeltypes.Packet,
acknowledgement []byte,
relayer sdk.AccAddress,
// NOTE: non nil errors will abort transaction
) error {
state := w.k.GetState(ctx)

Expand All @@ -60,20 +61,25 @@ func (w IBCModule) OnAcknowledgementPacket(
var ack channeltypes.Acknowledgement
err := types.ModuleCdc.UnmarshalJSON(acknowledgement, &ack)
if err != nil {
// should never happen
err = errorsmod.Wrap(errors.Join(gerrc.ErrInternal, err), "unmarshal ack on genesis transfer")
w.logger(ctx).Error("OnAcknowledgementPacket", "error", err)
return err
}

if !ack.Success() {
w.logger(ctx).Error("acknowledgement failed for genesis transfer", "packet", packet, "ack", ack)
return errors.New("acknowledgement failed for genesis transfer")
// something wrong - need to fix the hub with gov prop and try to send transfer again
return nil
}

gfo := w.k.GetGenesisInfo(ctx)
if !gfo.Amt().IsZero() {
// As we don't use the `ibc/transfer` module, we need to handle the funds escrow ourselves
err = w.k.EscrowGenesisTransferFunds(ctx, port, packet.SourceChannel, gfo.BaseCoinSupply())
if err != nil {
return errorsmod.Wrap(errors.Join(err, gerrc.ErrInternal), "escrow genesis transfer funds : rollapp is corrupted")
err := errorsmod.Wrap(errors.Join(err, gerrc.ErrInternal), "escrow genesis transfer funds : rollapp is corrupted")
w.logger(ctx).Error("OnAcknowledgementPacket", "error", err)
return err
}
}

Expand Down

0 comments on commit 95f1b41

Please sign in to comment.