[Update] Week #48 - peers, block/tx validations, sync

This is a bi-weekly update about what I’ve been working on since the last update.

Peers management issue

Related issue: Issue #3017

There was an issue with a node on testnet that couldn’t sync. After checking the number of available peers it turned out that nodes keep info about too many peers for too long - also those that are not available anymore. As a result, when the node loses connection with its current peers, it tries to connect to those mostly unavailable peers which results in connection timeouts.

Block/tx validations outside of conductor process

Related issues: Issue #3028, Issue #2167
Related branch: GH-2167-slow-sync

There has been some progress done, some validations can be performed in peer connection processes. This also means changing/removing the validations when a new block is being added inside the conductor process. This still requires more thought on how to proceed.

Throughput tests

Related PR: PR #3046

There is a test which shows how long it takes to add a block with its validations (and other operations) to the database vs. how long it takes to add a block to the database without the validations. It shows that the validations takes significant amount of time.

Peer connections in logs and HTTP /status endpoint

Related PRs: PR #3029, PR #3034

In order to easily check the number of currently connected peers (inbound and outbound connections) there was a new log message added and also the HTTP /status endpoint was extended.