Skip to content

Commit ec77fc5

Browse files
committed
[FAB-11894] State request to request open range
This commit changes the way gossip creates state requests, it avoids to send state request which considers peers ledger height as next available block sequence number to request from remote. UT is adjasted accordingly. Change-Id: Ic8991c268c2411740940c7804d2b6f53dfaf2358 Signed-off-by: Artem Barger <bartem@il.ibm.com>
1 parent de6c840 commit ec77fc5

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

gossip/state/state.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ func (s *GossipStateProviderImpl) antiEntropy() {
596596
continue
597597
}
598598

599-
s.requestBlocksInRange(uint64(ourHeight), uint64(maxHeight))
599+
s.requestBlocksInRange(uint64(ourHeight), uint64(maxHeight)-1)
600600
}
601601
}
602602
}
@@ -619,7 +619,7 @@ func (s *GossipStateProviderImpl) maxAvailableLedgerHeight() uint64 {
619619
}
620620

621621
// GetBlocksInRange capable to acquire blocks with sequence
622-
// numbers in the range [start...end].
622+
// numbers in the range [start...end).
623623
func (s *GossipStateProviderImpl) requestBlocksInRange(start uint64, end uint64) {
624624
atomic.StoreInt32(&s.stateTransferActive, 1)
625625
defer atomic.StoreInt32(&s.stateTransferActive, 0)
@@ -634,19 +634,19 @@ func (s *GossipStateProviderImpl) requestBlocksInRange(start uint64, end uint64)
634634

635635
for !responseReceived {
636636
if tryCounts > defAntiEntropyMaxRetries {
637-
logger.Warningf("Wasn't able to get blocks in range [%d...%d], after %d retries",
637+
logger.Warningf("Wasn't able to get blocks in range [%d...%d), after %d retries",
638638
prev, next, tryCounts)
639639
return
640640
}
641641
// Select peers to ask for blocks
642642
peer, err := s.selectPeerToRequestFrom(next)
643643
if err != nil {
644-
logger.Warningf("Cannot send state request for blocks in range [%d...%d], due to %+v",
644+
logger.Warningf("Cannot send state request for blocks in range [%d...%d), due to %+v",
645645
prev, next, errors.WithStack(err))
646646
return
647647
}
648648

649-
logger.Debugf("State transfer, with peer %s, requesting blocks in range [%d...%d], "+
649+
logger.Debugf("State transfer, with peer %s, requesting blocks in range [%d...%d), "+
650650
"for chainID %s", peer.Endpoint, prev, next, s.chainID)
651651

652652
s.mediator.Send(gossipMsg, peer)

gossip/state/state_test.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -995,7 +995,7 @@ func TestNewGossipStateProvider_SendingManyMessages(t *testing.T) {
995995

996996
for i := 0; i < bootstrapSetSize; i++ {
997997
commit := newCommitter()
998-
bootstrapSet = append(bootstrapSet, newPeerNode(newGossipConfig(portPrefix, i), commit, noopPeerIdentityAcceptor))
998+
bootstrapSet = append(bootstrapSet, newPeerNode(newGossipConfig(portPrefix, i, 0, 1, 2, 3, 4), commit, noopPeerIdentityAcceptor))
999999
}
10001000

10011001
defer func() {
@@ -1541,17 +1541,6 @@ func TestTransferOfPvtDataBetweenPeers(t *testing.T) {
15411541
peers["peer1"].coord.On("GetPvtDataAndBlockByNum", uint64(2)).Return(&pcomm.Block{
15421542
Header: &pcomm.BlockHeader{
15431543
Number: 2,
1544-
DataHash: []byte{0, 1, 1, 1},
1545-
PreviousHash: []byte{0, 0, 0, 1},
1546-
},
1547-
Data: &pcomm.BlockData{
1548-
Data: [][]byte{{1}, {2}, {3}},
1549-
},
1550-
}, gutil.PvtDataCollections{}, nil)
1551-
1552-
peers["peer1"].coord.On("GetPvtDataAndBlockByNum", uint64(3)).Return(&pcomm.Block{
1553-
Header: &pcomm.BlockHeader{
1554-
Number: 3,
15551544
DataHash: []byte{0, 0, 0, 1},
15561545
PreviousHash: []byte{0, 1, 1, 1},
15571546
},
@@ -1620,7 +1609,7 @@ func TestTransferOfPvtDataBetweenPeers(t *testing.T) {
16201609
})
16211610

16221611
wg := sync.WaitGroup{}
1623-
wg.Add(2)
1612+
wg.Add(1)
16241613
peers["peer2"].coord.On("StoreBlock", mock.Anything, mock.Anything).Run(func(args mock.Arguments) {
16251614
wg.Done() // Done once second peer hits commit of the block
16261615
}).Return([]string{}, nil) // No pvt data to complete and no error

0 commit comments

Comments
 (0)