internal/ethapi, eth: propagate SetHead errors through Backend

Return blockchain rewind failures from debug_setHead instead of ignoring them.
This commit is contained in:
Weixie Cui 2026-05-18 20:00:00 +08:00
parent d4027f3d46
commit b9d0450dd7
5 changed files with 6 additions and 7 deletions

View file

@ -61,9 +61,9 @@ func (b *EthAPIBackend) CurrentBlock() *types.Header {
return b.eth.blockchain.CurrentBlock()
}
func (b *EthAPIBackend) SetHead(number uint64) {
func (b *EthAPIBackend) SetHead(number uint64) error {
b.eth.handler.downloader.Cancel()
b.eth.blockchain.SetHead(number)
return b.eth.blockchain.SetHead(number)
}
func (b *EthAPIBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {

View file

@ -2126,8 +2126,7 @@ func (api *DebugAPI) SetHead(number hexutil.Uint64) error {
if header.Number.Uint64() <= uint64(number) {
return errors.New("not allowed to rewind to a future block")
}
api.b.SetHead(uint64(number))
return nil
return api.b.SetHead(uint64(number))
}
// NetAPI offers network related RPC methods

View file

@ -507,7 +507,7 @@ func (b testBackend) RPCGasCap() uint64 { return 10000000
func (b testBackend) RPCEVMTimeout() time.Duration { return time.Second }
func (b testBackend) RPCTxFeeCap() float64 { return 0 }
func (b testBackend) UnprotectedAllowed() bool { return false }
func (b testBackend) SetHead(number uint64) {}
func (b testBackend) SetHead(number uint64) error { return nil }
func (b testBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {
if number == rpc.LatestBlockNumber {
return b.chain.CurrentBlock(), nil

View file

@ -57,7 +57,7 @@ type Backend interface {
RPCTxSyncMaxTimeout() time.Duration
// Blockchain API
SetHead(number uint64)
SetHead(number uint64) error
HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error)
HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
HeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Header, error)

View file

@ -336,7 +336,7 @@ func (b *backendMock) RPCGasCap() uint64 { return 0 }
func (b *backendMock) RPCEVMTimeout() time.Duration { return time.Second }
func (b *backendMock) RPCTxFeeCap() float64 { return 0 }
func (b *backendMock) UnprotectedAllowed() bool { return false }
func (b *backendMock) SetHead(number uint64) {}
func (b *backendMock) SetHead(number uint64) error { return nil }
func (b *backendMock) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {
return nil, nil
}