Description
The net_plugin
attempts to disconnect all but one of duplicate connections to a peer. The idea is that if peer A is configured to connect to peer B and peer B is configured to connect to peer A; each peer A and B will only have one connection to each other.
PeerA
p2p-peer-address = peerb:9876
PeerB
p2p-peer-address = peera:9876
PeerA <- connected -> PeerB
PeerB <- connected -> PeerA
The deduplication logic of net_plugin
has never worked reliably. There are currently three different schemes that have been tried: proto_dup_goaway_resolution
, proto_dup_node_id_goaway
, and current scheme.
The current scheme still leaves duplicates in some race conditions. A simpler approach was recently attempted. See #1108. However, this approach had a race condition so that it would sometimes disconnect both connections; reverted in #1186. The issue is that the connection and handshake messages can be sent from each node at the same time. Both nodes can consider the other a duplicate at the same time and both disconnect.
In addition, EOSUSA has reported that the current de-duplication logic is causing continuous disconnect/reconnect from their proxy.
With the addition of the new block nack feature of net_plugin
, the benefit from removing duplicate connections is reduced. At this point, I wonder if we shouldn't just remove this feature as it seems to be causing more harm than good.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status