Skip to content

Node fails to synchronize blocks after a peer is randomly disconnected #6504

@jakamobiii

Description

@jakamobiii

Software Versions

OS : Linux
JVM : Oracle Corporation 1.8.0_161 amd64
Version : 4.8.0

Expected behaviour

When the node has established multiple valid peer connections, it should be able to fetch block data from multiple available peers.
Even if a single peer is disconnected (including random disconnection), the node should automatically switch to other already connected peers to continue block synchronization, ensuring continuity and stability of the sync process.

Actual behaviour

During runtime, the following abnormal behavior was observed:

  • The node successfully establishes approximately 30 P2P connections.
  • However, during block synchronization, it appears that the node continuously requests blocks from only a single peer, while the other connections are not effectively utilized.
  • When this peer is disconnected by the random elimination strategy, the following log is printed:
19:22:47.166 INFO  [peerWorker-5] [net](PeerConnection.java:184) Send peer /IP:50816 message type: P2P_DISCONNECT
reason: RANDOM_ELIMINATION

After this connection is terminated, the node does not automatically resume block requests from other already connected peers. The block height stops updating, and the node enters a state where it can no longer continue block synchronization.

Based on logs and observed behavior:

  • There appears to be a strong single-peer dependency for block data syncing.
  • When the random elimination strategy is triggered, the only actively used peer is disconnected, which raises the question of whether there is an issue with the random elimination strategy.

Frequency

This issue is not consistently reproducible and was not clearly observed in earlier runs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions