Commit c9b56cd1 authored by protolambda's avatar protolambda Committed by GitHub

op-e2e: fix safe head wait (#10751)

parent 4b9c1cfe
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
"math/big" "math/big"
"strings"
"time" "time"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
...@@ -97,9 +98,19 @@ func ForSafeBlock(ctx context.Context, rollupClient *sources.RollupClient, n uin ...@@ -97,9 +98,19 @@ func ForSafeBlock(ctx context.Context, rollupClient *sources.RollupClient, n uin
func ForNextSafeBlock(ctx context.Context, client BlockCaller) (*types.Block, error) { func ForNextSafeBlock(ctx context.Context, client BlockCaller) (*types.Block, error) {
safeBlockNumber := big.NewInt(rpc.SafeBlockNumber.Int64()) safeBlockNumber := big.NewInt(rpc.SafeBlockNumber.Int64())
current, err := client.BlockByNumber(ctx, safeBlockNumber) var current *types.Block
if err != nil { var err error
return nil, err for {
current, err = client.BlockByNumber(ctx, safeBlockNumber)
if err != nil {
// If block is not found (e.g. upon startup of chain, when there is no "safe block" yet)
// then it may be found later. Keep wait loop running.
if strings.Contains(err.Error(), "block not found") {
continue
}
return nil, err
}
break
} }
// Long timeout so we don't have to care what the block time is. If the test passes this will complete early anyway. // Long timeout so we don't have to care what the block time is. If the test passes this will complete early anyway.
...@@ -112,6 +123,11 @@ func ForNextSafeBlock(ctx context.Context, client BlockCaller) (*types.Block, er ...@@ -112,6 +123,11 @@ func ForNextSafeBlock(ctx context.Context, client BlockCaller) (*types.Block, er
default: default:
next, err := client.BlockByNumber(ctx, safeBlockNumber) next, err := client.BlockByNumber(ctx, safeBlockNumber)
if err != nil { if err != nil {
// If block is not found (e.g. upon startup of chain, when there is no "safe block" yet)
// then it may be found later. Keep wait loop running.
if strings.Contains(err.Error(), "block not found") {
continue
}
return nil, err return nil, err
} }
if next.NumberU64() > current.NumberU64() { if next.NumberU64() > current.NumberU64() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment