mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-04-19 03:01:06 -04:00
default to nothing available and nothing requested if peer state is empty
This commit is contained in:
@@ -340,7 +340,7 @@ func (p *PartialColumnBroadcaster) handleGossipForPeer(req gossipForPeer) (parti
|
||||
|
||||
func parsePartsMetadataFromPeerState(state any, expectedLength uint64, stateKind string) (*ethpb.PartialDataColumnPartsMetadata, error) {
|
||||
if state == nil {
|
||||
return blocks.NewPartsMetaWithNoAvailableAndAllRequests(expectedLength), nil
|
||||
return blocks.NewPartsMetaWithNoAvailableAndNoRequests(expectedLength), nil
|
||||
}
|
||||
pb, ok := state.(partialmessages.PartsMetadata)
|
||||
if !ok {
|
||||
|
||||
@@ -105,17 +105,12 @@ func (p *PartialDataColumn) newPartsMetadata() *ethpb.PartialDataColumnPartsMeta
|
||||
}
|
||||
}
|
||||
|
||||
// NewPartsMetaWithNoAvailableAndAllRequests creates metadata for n parts where
|
||||
// all requests are set and no parts are marked as available.
|
||||
func NewPartsMetaWithNoAvailableAndAllRequests(n uint64) *ethpb.PartialDataColumnPartsMetadata {
|
||||
available := bitfield.NewBitlist(n)
|
||||
requests := bitfield.NewBitlist(n)
|
||||
for i := range n {
|
||||
requests.SetBitAt(i, true)
|
||||
}
|
||||
// NewPartsMetaWithNoAvailableAndNoRequests creates metadata for n parts where
|
||||
// no parts are marked as available and no requests are set.
|
||||
func NewPartsMetaWithNoAvailableAndNoRequests(n uint64) *ethpb.PartialDataColumnPartsMetadata {
|
||||
return ðpb.PartialDataColumnPartsMetadata{
|
||||
Available: available,
|
||||
Requests: requests,
|
||||
Available: bitfield.NewBitlist(n),
|
||||
Requests: bitfield.NewBitlist(n),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ func TestPartialDataColumn_newPartsMetadata(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewPartsMetaWithNoAvailableAndAllRequests(t *testing.T) {
|
||||
func TestNewPartsMetaWithNoAvailableAndNoRequests(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
n uint64
|
||||
@@ -213,13 +213,11 @@ func TestNewPartsMetaWithNoAvailableAndAllRequests(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
meta := NewPartsMetaWithNoAvailableAndAllRequests(tt.n)
|
||||
meta := NewPartsMetaWithNoAvailableAndNoRequests(tt.n)
|
||||
require.Equal(t, tt.n, bitfield.Bitlist(meta.Available).Len())
|
||||
require.Equal(t, uint64(0), bitfield.Bitlist(meta.Available).Count())
|
||||
require.Equal(t, tt.n, bitfield.Bitlist(meta.Requests).Len())
|
||||
for i := uint64(0); i < tt.n; i++ {
|
||||
require.Equal(t, true, bitfield.Bitlist(meta.Requests).BitAt(i))
|
||||
}
|
||||
require.Equal(t, uint64(0), bitfield.Bitlist(meta.Requests).Count())
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -551,7 +549,7 @@ func TestPartialDataColumn_updateReceivedStateOutgoing(t *testing.T) {
|
||||
name: "nil receivedMeta",
|
||||
run: func(t *testing.T, p *PartialDataColumn) {
|
||||
_, err := p.updateReceivedStateOutgoing(nil, testBitlist(4, 1))
|
||||
require.ErrorContains(t, "recievedMeta is nil", err)
|
||||
require.ErrorContains(t, "receivedMeta is empty", err)
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -564,7 +562,7 @@ func TestPartialDataColumn_updateReceivedStateOutgoing(t *testing.T) {
|
||||
{
|
||||
name: "cellsSent length mismatch",
|
||||
run: func(t *testing.T, p *PartialDataColumn) {
|
||||
recvd := mustMarshalMeta(t, NewPartsMetaWithNoAvailableAndAllRequests(4))
|
||||
recvd := mustMarshalMeta(t, testPeerMeta(4, nil, allSet(4)))
|
||||
_, err := p.updateReceivedStateOutgoing(recvd, testBitlist(3, 1))
|
||||
require.ErrorContains(t, "available length mismatch", err)
|
||||
},
|
||||
@@ -675,7 +673,7 @@ func TestPartialDataColumn_ForPeer(t *testing.T) {
|
||||
name: "requested true sends missing cells and updates recvd state",
|
||||
run: func(t *testing.T) {
|
||||
p := mustNewPartialColumn(t, 4, 0, 2)
|
||||
initialMeta := mustMarshalMeta(t, NewPartsMetaWithNoAvailableAndAllRequests(4))
|
||||
initialMeta := mustMarshalMeta(t, testPeerMeta(4, nil, allSet(4)))
|
||||
next, encoded, meta, err := p.ForPeer(peer.ID("peer-a"), true, partialmessages.PeerState{
|
||||
RecvdState: initialMeta,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user