diff --git a/op-supervisor/supervisor/backend/backend.go b/op-supervisor/supervisor/backend/backend.go index 87856eb295ab0..21c79699ef635 100644 --- a/op-supervisor/supervisor/backend/backend.go +++ b/op-supervisor/supervisor/backend/backend.go @@ -189,6 +189,10 @@ func (su *SupervisorBackend) OnEvent(ev event.Event) bool { ChainID: x.ChainID, }) case superevents.LocalSafeUpdateEvent: + su.emitter.Emit(superevents.ChainProcessEvent{ + ChainID: x.ChainID, + Target: x.NewLocalSafe.Derived.Number, + }) su.emitter.Emit(superevents.UpdateCrossSafeRequestEvent{ ChainID: x.ChainID, }) diff --git a/op-supervisor/supervisor/backend/processors/chain_processor.go b/op-supervisor/supervisor/backend/processors/chain_processor.go index 34767d25f8b0a..d9a4737fbf755 100644 --- a/op-supervisor/supervisor/backend/processors/chain_processor.go +++ b/op-supervisor/supervisor/backend/processors/chain_processor.go @@ -113,6 +113,10 @@ func (s *ChainProcessor) OnEvent(ev event.Event) bool { } func (s *ChainProcessor) onRequest(target uint64) { + if target < s.nextNum() { + s.log.Debug("Indexing for target block already done", "target", target, "next", s.nextNum()) + return + } processed, err := s.rangeUpdate(target) if err != nil { if errors.Is(err, ethereum.NotFound) {