mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-20 06:49:27 +00:00
internal/ethapi: propagate SetHead errors to API (#35001)
Return blockchain rewind failures from debug_setHead instead of ignoring them.
This commit is contained in:
parent
970e3cd6f0
commit
e3ce773b8c
5 changed files with 6 additions and 7 deletions
|
|
@ -62,9 +62,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) {
|
||||
|
|
|
|||
|
|
@ -2131,8 +2131,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
|
||||
|
|
|
|||
|
|
@ -508,7 +508,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
|
||||
|
|
|
|||
|
|
@ -58,7 +58,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)
|
||||
|
|
|
|||
|
|
@ -337,7 +337,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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue