From 9ee67238eccc5218346f7cbcf936a76919bf7ae4 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:50:45 -0700 Subject: [PATCH] fix(relayer): fix scanning blocks twice (#14047) --- packages/relayer/indexer/detect_and_handle_reorg.go | 1 - packages/relayer/indexer/filter_then_subscribe.go | 13 ++++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/relayer/indexer/detect_and_handle_reorg.go b/packages/relayer/indexer/detect_and_handle_reorg.go index 55cfac8b7e..b50cb07f5c 100644 --- a/packages/relayer/indexer/detect_and_handle_reorg.go +++ b/packages/relayer/indexer/detect_and_handle_reorg.go @@ -19,7 +19,6 @@ func (svc *Service) detectAndHandleReorg(ctx context.Context, eventType string, } // reorg detected - log.Infof("reorg detected for msgHash %v and eventType %v", msgHash, eventType) err = svc.eventRepo.Delete(ctx, e.ID) diff --git a/packages/relayer/indexer/filter_then_subscribe.go b/packages/relayer/indexer/filter_then_subscribe.go index 86cdbd7747..98988962e4 100644 --- a/packages/relayer/indexer/filter_then_subscribe.go +++ b/packages/relayer/indexer/filter_then_subscribe.go @@ -2,6 +2,7 @@ package indexer import ( "context" + "fmt" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/pkg/errors" @@ -63,9 +64,17 @@ func (svc *Service) FilterThenSubscribe( end = header.Number.Uint64() } + // filter exclusive of the end block. + // we use "end" as the next starting point of the batch, and + // process up to end - 1 for this batch. + filterEnd := end - 1 + + fmt.Printf("block batch from %v to %v", i, filterEnd) + fmt.Println() + filterOpts := &bind.FilterOpts{ Start: svc.processingBlockHeight, - End: &end, + End: &filterEnd, Context: ctx, } @@ -88,6 +97,8 @@ func (svc *Service) FilterThenSubscribe( } if !messageSentEvents.Next() || messageSentEvents.Event == nil { + // use "end" not "filterEnd" here, because it will be used as the start + // of the next batch. if err := svc.handleNoEventsInBatch(ctx, chainID, int64(end)); err != nil { return errors.Wrap(err, "svc.handleNoEventsInBatch") }