Skip to content

Commit adad370

Browse files
committed
fix poller not restarting after indexer mode changes
1 parent 9d5d33d commit adad370

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

internal/orchestrator/poller.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ type Poller struct {
2929
pollUntilBlock *big.Int
3030
parallelPollers int
3131
workModeChan chan WorkMode
32+
currentWorkMode WorkMode
33+
workModeMutex sync.RWMutex
3234
}
3335

3436
type BlockNumberWithError struct {
@@ -117,6 +119,15 @@ func (p *Poller) Start(ctx context.Context) {
117119
if !ok {
118120
return
119121
}
122+
123+
// Do not poll if not in backfill mode
124+
p.workModeMutex.RLock()
125+
if p.currentWorkMode != WorkModeBackfill {
126+
p.workModeMutex.RUnlock()
127+
continue
128+
}
129+
p.workModeMutex.RUnlock()
130+
120131
blockRangeMutex.Lock()
121132
blockNumbers, err := p.getNextBlockRange(pollCtx)
122133
blockRangeMutex.Unlock()
@@ -149,10 +160,21 @@ func (p *Poller) Start(ctx context.Context) {
149160
p.shutdown(cancel, tasks, &wg)
150161
return
151162
case workMode := <-p.workModeChan:
152-
if workMode == WorkModeLive {
153-
log.Info().Msg("Switching to live mode, stopping poller")
154-
p.shutdown(cancel, tasks, &wg)
155-
return
163+
if workMode != p.currentWorkMode && workMode != "" {
164+
log.Info().Msgf("Poller work mode changing from %s to %s", p.currentWorkMode, workMode)
165+
p.workModeMutex.Lock()
166+
changedToBackfillFromLive := p.currentWorkMode == WorkModeLive && workMode == WorkModeBackfill
167+
p.currentWorkMode = workMode
168+
p.workModeMutex.Unlock()
169+
if changedToBackfillFromLive {
170+
lastBlockInMainStorage, err := p.storage.MainStorage.GetMaxBlockNumber(p.rpc.GetChainID())
171+
if err != nil {
172+
log.Error().Err(err).Msg("Error getting last block in main storage")
173+
} else {
174+
p.lastPolledBlock = lastBlockInMainStorage
175+
log.Debug().Msgf("Switching to backfill mode, updating last polled block to %s", p.lastPolledBlock.String())
176+
}
177+
}
156178
}
157179
case <-ticker.C:
158180
select {

0 commit comments

Comments
 (0)