mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 03:30:35 +00:00
Use Max Request Limit in Initial Sync (#13641)
* use max limit * manu's review
This commit is contained in:
parent
4c66e4d060
commit
e6a6365bdd
@ -126,8 +126,9 @@ type fetchRequestResponse struct {
|
||||
|
||||
// newBlocksFetcher creates ready to use fetcher.
|
||||
func newBlocksFetcher(ctx context.Context, cfg *blocksFetcherConfig) *blocksFetcher {
|
||||
blocksPerPeriod := flags.Get().BlockBatchLimit
|
||||
allowedBlocksBurst := flags.Get().BlockBatchLimitBurstFactor * flags.Get().BlockBatchLimit
|
||||
blockBatchLimit := maxBatchLimit()
|
||||
blocksPerPeriod := blockBatchLimit
|
||||
allowedBlocksBurst := flags.Get().BlockBatchLimitBurstFactor * blockBatchLimit
|
||||
// Allow fetcher to go almost to the full burst capacity (less a single batch).
|
||||
rateLimiter := leakybucket.NewCollector(
|
||||
float64(blocksPerPeriod), int64(allowedBlocksBurst-blocksPerPeriod),
|
||||
@ -159,6 +160,27 @@ func newBlocksFetcher(ctx context.Context, cfg *blocksFetcherConfig) *blocksFetc
|
||||
}
|
||||
}
|
||||
|
||||
// This specifies the block batch limit the initial sync fetcher will use. In the event the user has provided
|
||||
// and excessive number, this is automatically lowered.
|
||||
func maxBatchLimit() int {
|
||||
currLimit := flags.Get().BlockBatchLimit
|
||||
maxLimit := params.BeaconConfig().MaxRequestBlocks
|
||||
if params.DenebEnabled() {
|
||||
maxLimit = params.BeaconConfig().MaxRequestBlocksDeneb
|
||||
}
|
||||
castedMaxLimit, err := math.Int(maxLimit)
|
||||
if err != nil {
|
||||
// Should be impossible to hit this case.
|
||||
log.WithError(err).Error("Unable to calculate the max batch limit")
|
||||
return currLimit
|
||||
}
|
||||
if currLimit > castedMaxLimit {
|
||||
log.Warnf("Specified batch size exceeds the block limit of the network, lowering from %d to %d", currLimit, maxLimit)
|
||||
currLimit = castedMaxLimit
|
||||
}
|
||||
return currLimit
|
||||
}
|
||||
|
||||
// start boots up the fetcher, which starts listening for incoming fetch requests.
|
||||
func (f *blocksFetcher) start() error {
|
||||
select {
|
||||
|
@ -3,6 +3,7 @@ package initialsync
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
"sort"
|
||||
"sync"
|
||||
@ -1142,3 +1143,26 @@ func TestVerifyAndPopulateBlobs(t *testing.T) {
|
||||
// We delete each entry we've seen, so if we see all expected commits, the map should be empty at the end.
|
||||
require.Equal(t, 0, len(expectedCommits))
|
||||
}
|
||||
|
||||
func TestBatchLimit(t *testing.T) {
|
||||
params.SetupTestConfigCleanup(t)
|
||||
testCfg := params.BeaconConfig().Copy()
|
||||
testCfg.DenebForkEpoch = math.MaxUint64
|
||||
params.OverrideBeaconConfig(testCfg)
|
||||
|
||||
resetFlags := flags.Get()
|
||||
flags.Init(&flags.GlobalFlags{
|
||||
BlockBatchLimit: 640,
|
||||
BlockBatchLimitBurstFactor: 10,
|
||||
})
|
||||
defer func() {
|
||||
flags.Init(resetFlags)
|
||||
}()
|
||||
|
||||
assert.Equal(t, 640, maxBatchLimit())
|
||||
|
||||
testCfg.DenebForkEpoch = 100000
|
||||
params.OverrideBeaconConfig(testCfg)
|
||||
|
||||
assert.Equal(t, params.BeaconConfig().MaxRequestBlocksDeneb, uint64(maxBatchLimit()))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user