Node hangs after forced NeoFSBlockFetcher shutdown #1588

Open
opened 2025-12-28 17:16:55 +00:00 by sami · 0 comments
Owner

Originally created by @AnnaShaleva on GitHub (Dec 26, 2025).

Current Behavior

NeoFSBlockFetcher service used for headers downloading during StateSync process doesn't stop the node's operation after forced service shutdown. Also, no attempt to start headers synchronisation via P2P is taken:

2025-12-26T12:05:13.834+0300	INFO	persisted to disk	{"blocks": 0, "keys": 2515, "headerHeight": 312300, "blockHeight": 0, "took": "17.226902ms"}
2025-12-26T12:05:25.831+0300	INFO	persisted to disk	{"blocks": 0, "keys": 1495, "headerHeight": 313794, "blockHeight": 0, "took": "7.800683ms"}
2025-12-26T12:05:26.846+0300	INFO	persisted to disk	{"blocks": 0, "keys": 1007, "headerHeight": 314799, "blockHeight": 0, "took": "21.863001ms"}
2025-12-26T12:05:27.358+0300	ERROR	NeoFS BlockFetcher service: OID downloading routine failed	{"error": "failed to search objects: context deadline exceeded"}
2025-12-26T12:05:27.358+0300	INFO	shutting down NeoFS BlockFetcher service	{"force": true, "mode": "Headers"}
2025-12-26T12:05:27.862+0300	INFO	persisted to disk	{"blocks": 0, "keys": 1462, "headerHeight": 316259, "blockHeight": 0, "took": "36.884393ms"}

So the node hangs in the middle of headers sync.

Expected Behavior

Move to P2P headers sync in case if NeoFSBlockFetcher fails for some reason.

Steps to Reproduce

  1. Start NeoFS state sync process with a relatively small timeout for NeoFS BlockFetcher, wait for the NeoFSBlockFetcher service to quit due to downloading error.

Regression

Likely no, this code wasn't modified from the beginning.

Your Environment

Originally created by @AnnaShaleva on GitHub (Dec 26, 2025). ## Current Behavior `NeoFSBlockFetcher` service used for headers downloading during StateSync process doesn't stop the node's operation after forced service shutdown. Also, no attempt to start headers synchronisation via P2P is taken: ``` 2025-12-26T12:05:13.834+0300 INFO persisted to disk {"blocks": 0, "keys": 2515, "headerHeight": 312300, "blockHeight": 0, "took": "17.226902ms"} 2025-12-26T12:05:25.831+0300 INFO persisted to disk {"blocks": 0, "keys": 1495, "headerHeight": 313794, "blockHeight": 0, "took": "7.800683ms"} 2025-12-26T12:05:26.846+0300 INFO persisted to disk {"blocks": 0, "keys": 1007, "headerHeight": 314799, "blockHeight": 0, "took": "21.863001ms"} 2025-12-26T12:05:27.358+0300 ERROR NeoFS BlockFetcher service: OID downloading routine failed {"error": "failed to search objects: context deadline exceeded"} 2025-12-26T12:05:27.358+0300 INFO shutting down NeoFS BlockFetcher service {"force": true, "mode": "Headers"} 2025-12-26T12:05:27.862+0300 INFO persisted to disk {"blocks": 0, "keys": 1462, "headerHeight": 316259, "blockHeight": 0, "took": "36.884393ms"} ``` So the node hangs in the middle of headers sync. ## Expected Behavior Move to P2P headers sync in case if NeoFSBlockFetcher fails for some reason. ## Steps to Reproduce 1. Start NeoFS state sync process with a relatively small timeout for NeoFS BlockFetcher, wait for the NeoFSBlockFetcher service to quit due to downloading error. ## Regression Likely no, this code wasn't modified from the beginning. ## Your Environment <!-- Include as many relevant details about the environment you experienced the bug in --> * Version of the product used: https://github.com/nspcc-dev/neo-go/pull/4099, but the same issue is reproduceable on master.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nspcc-dev/neo-go#1588
No description provided.