rpc pool: drop hive-api.3speak.tv, which never completes a TCP connect - #84
Conversation
hive-api.3speak.tv resolves but never finishes a connect, on 443 or 80, so every attempt costs the full per-node timeout and answers nothing. Parking does not exclude it: the park lapses, the node is probed again, then a node that answers nothing never produces a latency sample, so it keeps returning to the front of config order where any unproven profile starts. The pool guard now covers it alongside arcange and rejects duplicates.
|
Warning Review limit reachedNext included review available in 12 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
ⓘ Your Qodo trial ends soon. Ask your workspace admin to set up billing to keep reviews running after the trial. Manage billing |
PR Summary by QodoDrop unreachable hive-api.3speak.tv from default RPC node pool
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1.
|
Code Review by Qodo
1.
|
Closes #83.
hive-api.3speak.tvis inHiveClients.DefaultNodesbut does not complete a TCP connect. DNS resolves, the connect never finishes, on 443 or on 80, so every attempt against it costs the full per-node timeout and returns nothing.Re-checked before making the change, as the issue asks. From two hosts in different regions, three attempts each:
connectnever leaves 0 and every request ends at the-mceiling.What changed
HiveClients.DefaultNodes, folding the reason into thehive-api.arcange.eunote above the list, which was added for exactly this failure mode. No replacement node: the remaining public nodes we consider good are already in the pool, while the two others that are missing are missing for a correctness reason the same comment records.DefaultPool_DoesNotCarryTheUnreachableNodenow asserts this host's absence next to arcange, plus that the pool has no duplicate entries. Mutation-checked: re-adding the node turns it red, so does duplicating any entry.Why it is worth a change rather than leaving it to the health tracker
The tracker does park a node after three consecutive failures, but parking is a recovery mechanism, not an exclusion. The park lapses, the node is probed again, then while unparked it sits in config order, which is exactly where an unproven latency profile starts. A node that answers nothing never produces a latency sample to rank on, so it keeps returning to the front of that list. Since
NodeHealthTrackergained per-class latency profiles, there are now two profiles per node that can be unproven at once, so the cost of carrying a node that cannot answer is paid twice.