Skip to content

fix(sync): don't lose nodes on single download err

pini requested to merge pini into dev

P2pCandidate.dlPromise promise doesn't resolve on download errors such as socket timeouts. Each time such an error occurs, the node is lost for the sync because the 'this.dlPromise.isResolved()' check used for testing the node's availability never succeeds anymore for this node.

This patch hardens the blocks downloading in two ways:

  • Retrying the download up to 5 times when the number of returned blocks is different from what was requested
  • On failure returns an empty block array so that the dlPromise is resolved and the node failure could be handled as expected at the P2PSyncDownloader level triggering the P2pCandidate.addFailure() function.

Merge request reports