eth/downloader, core/types: take withdrawals-size into account in downloader queue (#30276)
Fixes a slight miscalculation in the downloader queue, which was not accurately taking block withdrawals into account when calculating the size of the items in the queue
This commit is contained in:
parent
d3dae66e59
commit
ebe31dfd5c
@ -18,6 +18,7 @@ package types
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
@ -48,6 +49,12 @@ type Withdrawals []*Withdrawal
|
|||||||
// Len returns the length of s.
|
// Len returns the length of s.
|
||||||
func (s Withdrawals) Len() int { return len(s) }
|
func (s Withdrawals) Len() int { return len(s) }
|
||||||
|
|
||||||
|
var withdrawalSize = int(reflect.TypeOf(Withdrawal{}).Size())
|
||||||
|
|
||||||
|
func (s Withdrawals) Size() int {
|
||||||
|
return withdrawalSize * len(s)
|
||||||
|
}
|
||||||
|
|
||||||
// EncodeIndex encodes the i'th withdrawal to w. Note that this does not check for errors
|
// EncodeIndex encodes the i'th withdrawal to w. Note that this does not check for errors
|
||||||
// because we assume that *Withdrawal will only ever contain valid withdrawals that were either
|
// because we assume that *Withdrawal will only ever contain valid withdrawals that were either
|
||||||
// constructed by decoding or via public API in this package.
|
// constructed by decoding or via public API in this package.
|
||||||
|
@ -385,6 +385,7 @@ func (q *queue) Results(block bool) []*fetchResult {
|
|||||||
for _, tx := range result.Transactions {
|
for _, tx := range result.Transactions {
|
||||||
size += common.StorageSize(tx.Size())
|
size += common.StorageSize(tx.Size())
|
||||||
}
|
}
|
||||||
|
size += common.StorageSize(result.Withdrawals.Size())
|
||||||
q.resultSize = common.StorageSize(blockCacheSizeWeight)*size +
|
q.resultSize = common.StorageSize(blockCacheSizeWeight)*size +
|
||||||
(1-common.StorageSize(blockCacheSizeWeight))*q.resultSize
|
(1-common.StorageSize(blockCacheSizeWeight))*q.resultSize
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user