Skip to content

Commit 0157b17

Browse files
committed
fix edge case where existing range end block causes crashes
1 parent 5056f39 commit 0157b17

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

internal/orchestrator/poller.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ func NewBoundlessPoller(rpc rpc.IRPCClient, storage storage.IStorage) *Poller {
5252
}
5353
}
5454

55+
var ErrNoNewBlocks = fmt.Errorf("no new blocks to poll")
56+
5557
func NewPoller(rpc rpc.IRPCClient, storage storage.IStorage) *Poller {
5658
poller := NewBoundlessPoller(rpc, storage)
5759
untilBlock := big.NewInt(int64(config.Cfg.Poller.UntilBlock))
@@ -89,7 +91,9 @@ func (p *Poller) Start() {
8991
blockRangeMutex.Unlock()
9092

9193
if err != nil {
92-
log.Error().Err(err).Msg("Error getting block range")
94+
if err != ErrNoNewBlocks {
95+
log.Error().Err(err).Msg("Failed to get block range to poll")
96+
}
9397
continue
9498
}
9599

@@ -132,7 +136,7 @@ func (p *Poller) Poll(blockNumbers []*big.Int) (lastPolledBlock *big.Int) {
132136
}
133137

134138
func (p *Poller) reachedPollLimit(blockNumber *big.Int) bool {
135-
return p.pollUntilBlock.Sign() > 0 && blockNumber.Cmp(p.pollUntilBlock) >= 0
139+
return blockNumber == nil || (p.pollUntilBlock.Sign() > 0 && blockNumber.Cmp(p.pollUntilBlock) >= 0)
136140
}
137141

138142
func (p *Poller) getNextBlockRange() ([]*big.Int, error) {
@@ -145,7 +149,7 @@ func (p *Poller) getNextBlockRange() ([]*big.Int, error) {
145149
startBlock := new(big.Int).Add(p.lastPolledBlock, big.NewInt(1))
146150
if startBlock.Cmp(latestBlock) > 0 {
147151
log.Debug().Msgf("Start block %s is greater than latest block %s, skipping", startBlock, latestBlock)
148-
return nil, nil
152+
return nil, ErrNoNewBlocks
149153
}
150154
endBlock := p.getEndBlockForRange(startBlock, latestBlock)
151155
if startBlock.Cmp(endBlock) > 0 {

0 commit comments

Comments
 (0)