Skip to content

[Bug] Node reports healthy status while block synchronization is stalled #1317

Description

@maslitti

Describe the bug
The node can report a healthy and running status even when block synchronization is no longer progressing.

The process remains active, health checks return OK, and APIs continue to respond normally, but the block height does not increase and synchronization is effectively stalled.

This makes it difficult for operators to detect that the node is no longer contributing to the network.


To Reproduce

  1. Run a Fuel full node using the official documentation.
  2. Allow the node to start syncing normally.
  3. Observe situations where block height stops increasing.
  4. Note that health checks and API endpoints continue to report a healthy status.

Expected behavior
When a node reports a healthy status:

  • block synchronization should be actively progressing
  • block height should continue to increase
  • stalled synchronization should be reported as unhealthy or degraded

Actual behavior

  • node process remains running
  • APIs respond normally
  • health checks report OK
  • block height does not increase
  • no explicit error is reported

The node appears healthy while synchronization is effectively stalled.


Impact
Operators may assume the node is functioning correctly while it is no longer participating in the network.

This can result in:

  • reduced network reliability
  • missed participation in testnet activity
  • inaccurate uptime assumptions

Activity

  1. st9405996-gif commented on Feb 6, 2026

    @st9405996-gif

    I have analyzed this issue. The current health check likely only monitors the process status or API responsiveness but ignores the Block Height progression.

    To fix this, we should implement a 'Sync Progress Monitor' in the health check logic.

    Logic: Store the last_block_height and last_update_timestamp.

    Check: If current_block_height == last_block_height for more than X minutes (e.g., 5 mins) while the node is in 'Syncing' mode, the health check should return Unhealthy (Stalled).

    Suggested Implementation:

    Update the /health endpoint to query the execution engine for the latest block.

    If the delta between the current time and the last block timestamp exceeds a threshold, mark the node as degraded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions