Skip to content

A timeout is required when fetching blocks #908

@jclab-joseph

Description

@jclab-joseph

GetBlocks requires a fetch timeout for each block.

Below, we simulated adverse conditions by connecting 10 clients to one server and applying a speed limit.

2025/04/09 17:24:44 PROGRESS: [6.48 6.52 0.36 5.92 6.73 6.07 6.73 6.07 3.15 1.06]
2025/04/09 17:24:45 PROGRESS: [6.48 6.73 0.36 5.92 6.77 6.11 6.73 6.27 3.15 1.06]
2025/04/09 17:24:46 PROGRESS: [6.48 6.92 0.36 6.07 6.96 6.15 6.73 6.46 3.15 1.06]
2025/04/09 17:24:47 PROGRESS: [6.5 6.94 0.36 6.27 6.96 6.27 6.73 6.48 3.15 1.06]
2025/04/09 17:24:48 PROGRESS: [6.69 6.94 0.36 6.3 6.96 6.46 6.92 6.48 3.15 1.06]

There are clients (0.36, 3.15, 1.06) that are stuck and unable to download.

When executing GetBlocks, if it takes too long to fetch a specific block, it will not be cancelled and will just hang.
To improve this situation, should stop and find another peer.

boxo version : v0.29.1


Specifically, the problem occurred when there was one server (bootstrap node) that held the files and hundreds of clients tried to download the files simultaneously.
Some clients will successfully download, but most will get stuck and not be able to download.
I expected the node that received it first would forward the block to other nodes, but that didn't happen.
periodicSearchDelay is also useless if block reception has already started.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium: Good to have, but can wait until someone steps uphelp wantedSeeking public contribution on this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions