Use batches in broadcast to avoid resource communication errors

This commit is contained in:
msutton 2022-07-16 22:01:38 +03:00
parent b26b9f6c4b
commit ee5dacc72e

View File

@ -42,15 +42,30 @@ func broadcast(conf *broadcastConfig) error {
return err return err
} }
response, err := daemonClient.Broadcast(ctx, &pb.BroadcastRequest{Transactions: transactions}) const batch = 50
position := 0
// We send in batches to avoid communication errors
for position < len(transactions) {
var transactionBatch [][]byte
if position+batch > len(transactions) {
transactionBatch = transactions[position:]
} else {
transactionBatch = transactions[position : position+batch]
}
response, err := daemonClient.Broadcast(ctx, &pb.BroadcastRequest{Transactions: transactionBatch})
if err != nil { if err != nil {
return err return err
} }
if position == 0 {
fmt.Println("Transactions were sent successfully") fmt.Println("Transactions were sent successfully")
}
fmt.Println("Transaction ID(s): ") fmt.Println("Transaction ID(s): ")
for _, txID := range response.TxIDs { for _, txID := range response.TxIDs {
fmt.Printf("\t%s\n", txID) fmt.Printf("\t%s\n", txID)
} }
position += batch
}
return nil return nil
} }