From 05e13961215d29ec0859828b5a25ac2392d1bab3 Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Wed, 15 Feb 2023 10:03:44 +0300 Subject: [PATCH] feat: add status types to dispatcher --- internal/tasker/task/dispatch.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/internal/tasker/task/dispatch.go b/internal/tasker/task/dispatch.go index df5d35d..088214d 100644 --- a/internal/tasker/task/dispatch.go +++ b/internal/tasker/task/dispatch.go @@ -3,6 +3,7 @@ package task import ( "context" "encoding/json" + "fmt" "github.com/celo-org/celo-blockchain/common" "github.com/celo-org/celo-blockchain/core/types" @@ -21,8 +22,9 @@ type ( } dispatchEventPayload struct { - OtxId uint - TxHash string + OtxId uint + TxHash string + DispatchStatus status.Status } ) @@ -54,8 +56,16 @@ func TxDispatch( ctx, eth.SendTx(p.Tx).Returns(&txHash), ); err != nil { - // TODO: Coreect error status - dispatchStatus.Status = status.FailGasPrice + switch err.Error() { + case celo.ErrGasPriceLow: + dispatchStatus.Status = status.FailGasPrice + case celo.ErrInsufficientGas: + dispatchStatus.Status = status.FailInsufficientGas + case celo.ErrNonceLow: + dispatchStatus.Status = status.FailNonce + default: + dispatchStatus.Status = status.Unknown + } _, err := pg.CreateDispatchStatus(ctx, dispatchStatus) if err != nil { @@ -72,7 +82,7 @@ func TxDispatch( return err } - return err + return fmt.Errorf("dispatch: failed %v: %w", err, asynq.SkipRetry) } dispatchStatus.Status = status.Successful