This release fixes some problems where nodes would re-gossip a block several times because they had not finished processing the block absorb when other copies of the block came in. This could lead to a bunch of unnecessary work as the same block would be received several times, from several peers.
A related fix was made to the fast-forward handler, which is used to ensure consensus members can be quickly synced if they fall behind. Several fast-forwards could happen at once and cause contention. A fix has been make to limit the number of active fast-forwards at once to 1.
Work has also been done to reduce bottlenecking on some processes to get p2p swarm information. We’ve made much more of that access concurrent so swarm lookups don’t timeout or cause crashes, which will improve resiliency.
To support ETL, several fixes have also landed to improve the syncing behaviour; background absorbs are now done in properly monitored background processes, add_block events now fire in every case and applications can now optionally defer loading of the chain to allow themselves to complete their own initialization.
Finally a small fix to the transaction manager was made, to handle the case where a queued transaction was absorbed immediately prior to a dependent transaction being evaluated.
- Less block re-gossip: PR: core/443
- Singleton fast-forward: PR: core/444
- Remove synchronous swarm lookups: PRs: miner/384 core/442 libp2p/276
- Block sync improvements: PRs: core/439 core/440 core/441
- Fix dependent transaction resolution: PR: core/438
2020.05.06.0 release was deployed to the beta group the evening of Tuesday the 5th PST. We anticipate releasing it to general ability the afternoon of the 6th PST.