Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion beacon-chain/sync/rpc_data_column_sidecars_by_range.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

p2ptypes "github.com/OffchainLabs/prysm/v7/beacon-chain/p2p/types"
"github.com/OffchainLabs/prysm/v7/cmd/beacon-chain/flags"
"github.com/OffchainLabs/prysm/v7/config/params"
"github.com/OffchainLabs/prysm/v7/consensus-types/blocks"
"github.com/OffchainLabs/prysm/v7/consensus-types/interfaces"
Expand All @@ -15,6 +16,7 @@ import (
"github.com/OffchainLabs/prysm/v7/monitoring/tracing/trace"
pb "github.com/OffchainLabs/prysm/v7/proto/prysm/v1alpha1"
"github.com/OffchainLabs/prysm/v7/runtime/version"
"github.com/OffchainLabs/prysm/v7/time/slots"
libp2pcore "github.com/libp2p/go-libp2p/core"
"github.com/pkg/errors"

Expand Down Expand Up @@ -251,6 +253,11 @@ func validateDataColumnsByRange(request *pb.DataColumnSidecarsByRangeRequest, cu
return nil, errors.Wrap(p2ptypes.ErrInvalidRequest, "overflow end - start + 1")
}

rangeParameters := &rangeParams{start: startSlot, end: endSlot, size: uint64(size)}
// Keep the complete request range while limiting the slot width of each database read.
batchLimit := min(
uint64(flags.Get().BlockBatchLimit),
params.MaxRequestBlock(slots.ToEpoch(currentSlot)),
)
rangeParameters := &rangeParams{start: startSlot, end: endSlot, size: min(uint64(size), batchLimit)}
return rangeParameters, nil
}
5 changes: 3 additions & 2 deletions beacon-chain/sync/rpc_data_column_sidecars_by_range_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/OffchainLabs/prysm/v7/beacon-chain/p2p"
p2ptest "github.com/OffchainLabs/prysm/v7/beacon-chain/p2p/testing"
"github.com/OffchainLabs/prysm/v7/beacon-chain/startup"
"github.com/OffchainLabs/prysm/v7/cmd/beacon-chain/flags"
fieldparams "github.com/OffchainLabs/prysm/v7/config/fieldparams"
"github.com/OffchainLabs/prysm/v7/config/params"
"github.com/OffchainLabs/prysm/v7/consensus-types/blocks"
Expand Down Expand Up @@ -431,11 +432,11 @@ func TestValidateDataColumnsByRange(t *testing.T) {
expectErr: false,
},
{
name: "range exceeds limits",
name: "range is split at the block batch limit",
startSlot: 0,
count: 10_000,
currentSlot: 400,
expected: &rangeParams{start: 320, end: 400, size: 81},
expected: &rangeParams{start: 320, end: 400, size: uint64(flags.Get().BlockBatchLimit)},
expectErr: false,
},
}
Expand Down
3 changes: 3 additions & 0 deletions changelog/exocognosis_cap-data-column-range-batches.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Fixed

- Bound data column sidecar range database reads to the configured block batch size.