algorand / algorand/go-algorand

network: Handle failed to broadcast transactions

Abierto
#5,641 1 comentario 0 reacciones 1 asignado Reclamado por @algonautshant Ver en GitHub
Enhancement Team Carbon-11
Lenguaje dominante
Go
Estrellas
1.4k
Forks
537
Merge medio
1 d 7 h
PR fusionados (30 d)
18

Descripción

## Summary

When a txn accepted by a node (both REST and WS) first we Remember and then attempt to broadcast. Broadcast itself can fail for various reason including a pure network performance `errors.New("broadcast queue full")` reason.

In this case the txn could stuck on a node (npn, part) until it expires.

Solution options to consider:
1. Modify txsync to pull from nodes and re-broadcast to nodes excluding the node pulled from (X)
2. Handle errBcastQFull from Broadcast/Relay in node/txHandler and try again after some delay later (S)
3. Make txpool to maintain non-flushing txns, and re-broadcast them every 2-3 (N) rounds: after 2+ rounds local txns are expected to be included into some proposal. Note, in p2p world N could be > 3+ (M).

## Acceptance
1. Unit test

## Urgency

This is a well known issue. Some partners (i.e. Circle) encounter this.
It would also improve overall txn sending expedience.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.