p2panda / aquadoggo

Node for the p2panda network handling validation, storage, aggregation and replication
GNU Affero General Public License v3.0
69 stars 5 forks source link

Move relay connection logic into main event loop #632

Closed sandreae closed 1 month ago

sandreae commented 2 months ago

Before this PR a peer only registered on any configured relay nodes on startup in an initiation phase before the main networking event loop started. The main reason for this is that listening on the circuit relay would sometimes (quite often) fail and so we needed a retry loop which would timeout after x seconds. This pattern was clunky and not possible to fit into the event loop. It also meant that we had to disable the Peers behaviour, enable it, and then force connect again to the relay in order to trigger replication... ugh...

Since https://github.com/p2panda/aquadoggo/pull/631 listening on the circuit relay never seems to fail, and so moving all of the relay connection and registration logic into the main event loop is now possible (yay!). This unlocks some nicer patterns around handling relays and means we can dynamically register on relays during runtime. No disabling peers behaviour and secondary force connecting required.

check out these beautiful logs!!

[2024-06-22T15:45:36Z INFO  aquadoggo::manager] Start materializer service
[2024-06-22T15:45:36Z INFO  aquadoggo::materializer::worker] Register reduce worker with pool size 16
[2024-06-22T15:45:36Z INFO  aquadoggo::materializer::worker] Register dependency worker with pool size 16
[2024-06-22T15:45:36Z INFO  aquadoggo::materializer::worker] Register schema worker with pool size 16
[2024-06-22T15:45:36Z INFO  aquadoggo::materializer::worker] Register blob worker with pool size 16
[2024-06-22T15:45:36Z INFO  aquadoggo::materializer::worker] Register garbage_collection worker with pool size 16
[2024-06-22T15:45:36Z DEBUG aquadoggo::materializer::service] Dispatch 0 pending tasks from last runtime
[2024-06-22T15:45:36Z DEBUG aquadoggo::materializer::service] Materialiser service is ready
[2024-06-22T15:45:36Z INFO  aquadoggo::manager] Start http service
[2024-06-22T15:45:36Z DEBUG aquadoggo::graphql::schema] Subscribing GraphQL manager to schema provider
[2024-06-22T15:45:36Z DEBUG aquadoggo::graphql::schema] Finished building initial GraphQL schema
[2024-06-22T15:45:36Z INFO  aquadoggo] HTTP port 2020 was already taken, try random port instead ..
[2024-06-22T15:45:36Z INFO  aquadoggo] Go to http://0.0.0.0:40723/graphql to use GraphQL playground
[2024-06-22T15:45:36Z DEBUG aquadoggo::http::service] HTTP service is ready
[2024-06-22T15:45:36Z INFO  aquadoggo::manager] Start network service
[2024-06-22T15:45:36Z INFO  aquadoggo] Peer id: 12D3KooWHNwGZBRLBQqiJsQD8xLy9JmPfJiSptRX8d15ftiVxLrJ
[2024-06-22T15:45:36Z INFO  aquadoggo::network::service] Networking service initializing...
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::behaviour] Identify network behaviour enabled
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::behaviour] Rendezvous client network behaviour enabled
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::behaviour] Relay client network behaviour enabled
[2024-06-22T15:45:36Z INFO  aquadoggo] QUIC port 2022 was already taken, try random port instead ..
[2024-06-22T15:45:36Z INFO  aquadoggo::network::service] Network service ready!
[2024-06-22T15:45:36Z INFO  aquadoggo::manager] Start replication service
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Dial relay at address 127.0.0.1:2022
[2024-06-22T15:45:36Z INFO  aquadoggo] Node is listening on 0.0.0.0:59137
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Connected to /ip4/127.0.0.1/udp/2022/quic-v1 (1/1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Established connection with peer: 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Relay identified 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm /ip4/127.0.0.1/udp/2022/quic-v1
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Told relay 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm its public address
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Registration request sent to relay 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Registered on rendezvous 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm in namespace "aquadoggo"
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Relay 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm accepted circuit reservation request
[2024-06-22T15:45:36Z INFO  aquadoggo::network::service] Discovering peers in namespace "aquadoggo" on relay 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Discovered 2 addresses for peer 12D3KooWHNwGZBRLBQqiJsQD8xLy9JmPfJiSptRX8d15ftiVxLrJ
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Discovered 2 addresses for peer 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Dialed peer 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Connected to /ip4/127.0.0.1/udp/2022/quic-v1/p2p/12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm/p2p-circuit/p2p/12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (1/1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Established connection with peer: 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (2)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::manager] Initiate outbound replication session with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Finished replication with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z DEBUG aquadoggo::network::service] Connected to /ip4/127.0.0.1/udp/55554/quic-v1/p2p/12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (1/2)
[2024-06-22T15:45:36Z INFO  aquadoggo::network::service] Connection with 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba(3) upgraded to direct connection
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Established connection with peer: 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (3)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::manager] Initiate outbound replication session with peer 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (2)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::manager] Initiate outbound replication session with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Finished replication with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Finished replication with peer 12D3KooWJ5veLXRZ1zibpzMHFDfoPuFCMjKAUUHxWEsgQuyaFgba (2)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::manager] Accept inbound replication session with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)
[2024-06-22T15:45:36Z INFO  aquadoggo::replication::service] Finished replication with peer 12D3KooWK2KQ1BQHzsQDEsHdGfhndDTDJqdFjFgwTSjCQZRNJ3Jm (1)

📋 Checklist

codecov[bot] commented 2 months ago

Codecov Report

Attention: Patch coverage is 17.52577% with 240 lines in your changes missing coverage. Please review.

Project coverage is 92.46%. Comparing base (ba416ea) to head (98848dc). Report is 58 commits behind head on bump-libp2p.

:exclamation: Current head 98848dc differs from pull request most recent head 2798270

Please upload reports for the commit 2798270 to get more accurate results.

Files Patch % Lines
aquadoggo/src/network/service.rs 4.28% 134 Missing :warning:
aquadoggo/src/network/relay.rs 0.00% 62 Missing :warning:
aquadoggo/src/network/utils.rs 0.00% 32 Missing :warning:
aquadoggo/src/network/swarm.rs 60.00% 6 Missing :warning:
aquadoggo/src/http/service.rs 40.00% 3 Missing :warning:
aquadoggo/src/lib.rs 85.71% 1 Missing :warning:
aquadoggo/src/network/behaviour.rs 50.00% 1 Missing :warning:
aquadoggo/src/network/peers/handler.rs 66.66% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## bump-libp2p #632 +/- ## =============================================== + Coverage 92.35% 92.46% +0.11% =============================================== Files 106 104 -2 Lines 17861 20474 +2613 =============================================== + Hits 16495 18931 +2436 - Misses 1366 1543 +177 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

adzialocha commented 1 month ago

(needs a rebase against main and CHANGELOG.md entry)