Skip to content

Commit 8d99b2f

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

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

internal/orchestrator/poller.go

Lines changed: 29 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,24 @@ 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+
p.workModeMutex.RLock()
164+
currentWorkMode := p.currentWorkMode
165+
p.workModeMutex.RUnlock()
166+
if workMode != currentWorkMode && workMode != "" {
167+
log.Info().Msgf("Poller work mode changing from %s to %s", currentWorkMode, workMode)
168+
p.workModeMutex.Lock()
169+
changedToBackfillFromLive := currentWorkMode == WorkModeLive && workMode == WorkModeBackfill
170+
p.currentWorkMode = workMode
171+
p.workModeMutex.Unlock()
172+
if changedToBackfillFromLive {
173+
lastBlockInMainStorage, err := p.storage.MainStorage.GetMaxBlockNumber(p.rpc.GetChainID())
174+
if err != nil {
175+
log.Error().Err(err).Msg("Error getting last block in main storage")
176+
} else {
177+
p.lastPolledBlock = lastBlockInMainStorage
178+
log.Debug().Msgf("Switching to backfill mode, updating last polled block to %s", p.lastPolledBlock.String())
179+
}
180+
}
156181
}
157182
case <-ticker.C:
158183
select {

0 commit comments

Comments
 (0)