diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index fca2f46e63..f8c760646a 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -124,11 +124,25 @@ func newTestBackend(config *node.Config) (*node.Node, []*types.Block, error) { return nil, nil, fmt.Errorf("can't import test blocks: %v", err) } // Ensure the tx indexing is fully generated - for ; ; time.Sleep(time.Millisecond * 100) { + timeout := time.NewTimer(30 * time.Second) + defer timeout.Stop() + ticker := time.NewTicker(100 * time.Millisecond) + defer ticker.Stop() + var lastErr error + for { progress, err := ethservice.BlockChain().TxIndexProgress() + lastErr = err if err == nil && progress.Done() { break } + select { + case <-timeout.C: + if lastErr != nil { + return nil, nil, fmt.Errorf("tx indexing did not complete within 30s: %v", lastErr) + } + return nil, nil, fmt.Errorf("tx indexing did not complete within 30s") + case <-ticker.C: + } } return n, blocks, nil }