Skip to content

Commit 266edc1

Browse files
committed
split txHashes into separate batches, #84 (comment)
1 parent 1f545f0 commit 266edc1

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

eth/handler.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ const (
5353
// All transactions with a higher size will be announced and need to be fetched
5454
// by the peer.
5555
txMaxBroadcastSize = 4096
56+
57+
// maxHashCount is the max count of hashes in one batch to RequestTxs
58+
maxHashesCount = 500
5659
)
5760

5861
var (
@@ -688,12 +691,27 @@ func (h *handler) enableSyncedFeatures() {
688691

689692
// BroadcastRequestTxs will send GetPooledTransactionsMsg to neighbor peers
690693
func (h *handler) BroadcastRequestTxs(txHashes []common.Hash) {
691-
for key, peer := range h.peers.peers {
692-
err := peer.RequestTxs(txHashes)
693-
if err != nil {
694-
log.Error("BroadcastRequestTxs", "txHashes", txHashes,
695-
"peerstring", key,
696-
"error", err)
694+
if len(txHashes) == 0 {
695+
return
696+
}
697+
for i := 0; i <= len(txHashes)/maxHashesCount; i++ {
698+
start := i * maxHashesCount
699+
stop := (i + 1) * maxHashesCount
700+
if stop > len(txHashes) {
701+
stop = len(txHashes)
702+
}
703+
if start == stop {
704+
break
705+
}
706+
// Broadcast RequestTxs
707+
for key, peer := range h.peers.peers {
708+
err := peer.RequestTxs(txHashes)
709+
if err != nil {
710+
log.Error("BroadcastRequestTxs", "txHashes", txHashes,
711+
"peerstring", key,
712+
"error", err)
713+
}
697714
}
698715
}
716+
699717
}

0 commit comments

Comments
 (0)