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

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