Skip to content

Commit 0463b23

Browse files
committed
feat: handle block not found
1 parent fc7d2c3 commit 0463b23

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

repository/handlers/blocks.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (repo *BlocksRepo) GetBlockDatePairs(ts int64) *schemas.BlockDate {
9393
return repo.blockDatePairs.Get(ts)
9494
}
9595

96-
func (repo *BlocksRepo) fetchBlockTime(blockNum int64) uint64 {
96+
func (repo *BlocksRepo) _fetchBlockTime(blockNum int64) (uint64, error) {
9797
b, err := repo.client.BlockByNumber(context.Background(), big.NewInt(blockNum))
9898
// if err != nil && err.Error() == "server returned empty uncle list but block header indicates uncles" {
9999
// repo.blocks[blockNum] = &core.Block{BlockNumber: blockNum}
@@ -104,11 +104,25 @@ func (repo *BlocksRepo) fetchBlockTime(blockNum int64) uint64 {
104104
if strings.Contains(err.Error(), "invalid transaction v, r, s values") && ds.IsTestnet(repo.client) {
105105
b, err := repo.client.BlockByNumber(context.Background(), big.NewInt(blockNum-1))
106106
log.CheckFatal(err)
107-
return b.Time() + 1
107+
return b.Time() + 1, nil
108108
}
109-
log.Fatalf("%s: %d", err, blockNum)
109+
return 0, err
110+
}
111+
return b.Time(), nil
112+
}
113+
114+
func (repo *BlocksRepo) fetchBlockTime(blockNum int64) uint64 {
115+
bTime, err := repo._fetchBlockTime(blockNum)
116+
msg := ""
117+
if err != nil && strings.Contains(err.Error(), "not found") {
118+
time.Sleep(5 * time.Second)
119+
bTime, err = repo._fetchBlockTime(blockNum)
120+
msg = "tried again"
121+
}
122+
if err != nil {
123+
log.Fatalf("%s: %d", err, blockNum, msg)
110124
}
111-
return b.Time()
125+
return bTime
112126
}
113127

114128
func (repo *BlocksRepo) setBlock(blockNum int64) {

0 commit comments

Comments
 (0)