Skip to content

request_initial_missed_block will cause catching-up nodes to request headers backwards. #1549

Open
@peilun-conflux

Description

@peilun-conflux

We expect catching-up nodes to sync blocks in order so the blocks can become graph-ready soon. But if some blocks are missing during recovery, the current mechanism will try to request them directly, and then their dependencies. These backward-requested blocks may stay not-graph-ready for a long time and get eventually garbage collected, wasting network resources.

This mainly happens for full nodes. After it syncs headers and a checkpoint, it will try to recover the graph based on the header terminals, and these terminals do not have available bodies, so they'll always become initial_missed_block.

Since this issue mostly affects full nodes, it will not cause much trouble because full nodes will only sync bodies after the latest checkpoints. Even backward sync should complete within an acceptable time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low PriorityenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions