From 5ef2c0f5d78764189d168aa527cec62238f1d6c6 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Fri, 17 Feb 2023 12:21:21 -0800 Subject: [PATCH] fix(relayer): Save block progress when caught up and subscribing to new events (#13177) --- packages/relayer/indexer/subscribe.go | 18 ++++++++++++++++++ packages/relayer/indexer/subscribe_test.go | 3 +-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/relayer/indexer/subscribe.go b/packages/relayer/indexer/subscribe.go index e4c02698a1..02ea554e6f 100644 --- a/packages/relayer/indexer/subscribe.go +++ b/packages/relayer/indexer/subscribe.go @@ -8,6 +8,7 @@ import ( "github.com/ethereum/go-ethereum/event" "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/taikoxyz/taiko-mono/packages/relayer" "github.com/taikoxyz/taiko-mono/packages/relayer/contracts/bridge" ) @@ -39,6 +40,23 @@ func (svc *Service) subscribe(ctx context.Context, chainID *big.Int) error { if err != nil { log.Errorf("svc.subscribe, svc.handleEvent: %v", err) } + + block, err := svc.blockRepo.GetLatestBlockProcessedForEvent(relayer.EventNameMessageSent, chainID) + if err != nil { + log.Errorf("svc.subscribe, blockRepo.GetLatestBlockProcessedForEvent: %v", err) + } + + if block.Height < event.Raw.BlockNumber { + err = svc.blockRepo.Save(relayer.SaveBlockOpts{ + Height: event.Raw.BlockNumber, + Hash: event.Raw.BlockHash, + ChainID: chainID, + EventName: relayer.EventNameMessageSent, + }) + if err != nil { + log.Errorf("svc.subscribe, svc.blockRepo.Save: %v", err) + } + } }() } } diff --git a/packages/relayer/indexer/subscribe_test.go b/packages/relayer/indexer/subscribe_test.go index c68811b1e3..f899386d35 100644 --- a/packages/relayer/indexer/subscribe_test.go +++ b/packages/relayer/indexer/subscribe_test.go @@ -2,7 +2,6 @@ package indexer import ( "context" - "math/big" "testing" "time" @@ -14,7 +13,7 @@ func Test_subscribe(t *testing.T) { svc, bridge := newTestService() go func() { - _ = svc.subscribe(context.Background(), big.NewInt(1)) + _ = svc.subscribe(context.Background(), mock.MockChainID) }() <-time.After(6 * time.Second)