Skip to content

Commit fb1c4ae

Browse files
committed
feat: adds retries to all calls
1 parent 9946586 commit fb1c4ae

4 files changed

Lines changed: 56 additions & 2 deletions

File tree

oracle/pkg/l1Listener/l1Listener.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type WinnerRegister interface {
2727
type EthClient interface {
2828
BlockNumber(ctx context.Context) (uint64, error)
2929
HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error)
30+
BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error)
3031
}
3132

3233
type L1Listener struct {

oracle/pkg/l1Listener/l1Listener_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ func (t *testEthClient) HeaderByNumber(_ context.Context, number *big.Int) (*typ
205205
return hdr, nil
206206
}
207207

208+
func (t *testEthClient) BlockByNumber(_ context.Context, number *big.Int) (*types.Block, error) {
209+
return nil, nil
210+
}
211+
208212
func publishLog(
209213
eventManager events.EventManager,
210214
blockNum *big.Int,

oracle/pkg/node/node.go

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ func NewNode(opts *Options) (*Node, error) {
164164
listenerL1Client = &laggerdL1Client{EthClient: listenerL1Client, amount: opts.LaggerdMode}
165165
}
166166

167+
listenerL1Client = &infiniteRetryL1Client{EthClient: listenerL1Client, logger: nd.logger}
168+
167169
blockTracker, err := blocktracker.NewBlocktrackerTransactor(
168170
opts.BlockTrackerContractAddr,
169171
settlementRPC,
@@ -232,7 +234,7 @@ func NewNode(opts *Options) (*Node, error) {
232234

233235
updtr, err := updater.NewUpdater(
234236
nd.logger.With("component", "updater"),
235-
l1Client,
237+
listenerL1Client,
236238
st,
237239
evtMgr,
238240
oracleTransactorSession,
@@ -404,6 +406,53 @@ func (w *winnerOverrideL1Client) HeaderByNumber(ctx context.Context, number *big
404406
return hdr, nil
405407
}
406408

409+
type infiniteRetryL1Client struct {
410+
l1Listener.EthClient
411+
logger *slog.Logger
412+
}
413+
414+
func (i *infiniteRetryL1Client) BlockNumber(ctx context.Context) (uint64, error) {
415+
var blkNum uint64
416+
var err error
417+
for {
418+
blkNum, err = i.EthClient.BlockNumber(ctx)
419+
if err == nil {
420+
break
421+
}
422+
i.logger.Error("failed to get block number, retrying...", "error", err)
423+
time.Sleep(1 * time.Second)
424+
}
425+
return blkNum, nil
426+
}
427+
428+
func (i *infiniteRetryL1Client) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) {
429+
var hdr *types.Header
430+
var err error
431+
for {
432+
hdr, err = i.EthClient.HeaderByNumber(ctx, number)
433+
if err == nil {
434+
break
435+
}
436+
i.logger.Error("failed to get header by number, retrying...", "error", err)
437+
time.Sleep(1 * time.Second)
438+
}
439+
return hdr, nil
440+
}
441+
442+
func (i *infiniteRetryL1Client) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) {
443+
var blk *types.Block
444+
var err error
445+
for {
446+
blk, err = i.EthClient.BlockByNumber(ctx, number)
447+
if err == nil {
448+
break
449+
}
450+
i.logger.Error("failed to get block by number, retrying...", "error", err)
451+
time.Sleep(1 * time.Second)
452+
}
453+
return blk, nil
454+
}
455+
407456
func setBuilderMapping(
408457
ctx context.Context,
409458
bt *blocktracker.BlocktrackerTransactorSession,

x/contracts/txmonitor/eth_helper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (e *evmHelper) BatchReceipts(ctx context.Context, txHashes []common.Hash) (
114114

115115
var receipts []Result
116116
var err error
117-
for retries := 0; retries < 3; retries++ {
117+
for retries := 0; retries < 100; retries++ {
118118
// Execute the batch request
119119
err = e.client.BatchCallContext(ctx, batch)
120120
if err == nil {

0 commit comments

Comments
 (0)