neo-go/pkg/services
Ekaterina Pavlova 119ca27994 blockfetcher: fix block enqueue logic
Previously, the `blockQueuer` routine, which enqueues blocks into
`bQueue`, could be blocked on enqueing newer blocks if older blocks
downloading is delayed by NeoFS.

The `blocksCh` channel, acting as a queue ordered by download speed,
conflicted with the BQueue requirement for strict sequential enqueuing
(expecting an exact range of blocks), resulting in a deadlock that
stalled the process.

Before with default config settings:
```
2024-11-27T17:12:19.348+0300	INFO	persisted to disk	{"blocks":
 0, "keys": 116, "headerHeight": 0, "blockHeight": 0, "took": "15
 .509083ms"}
2024-11-27T17:19:39.574+0300	INFO	persisted to disk	{"blocks":
 16, "keys": 11107, "headerHeight": 216768, "blockHeight": 216768,
 "took": "62.762041ms"}
```
Average block persistence speed: 492.40 block/s
Average blocks number for each persist log: 584.28

After:

```
2024-11-27T17:29:03.362+0300	INFO	persisted to disk	{"blocks":
 0, "keys": 116, "headerHeight": 0, "blockHeight": 0, "took": "19
 .485084ms"}
2024-11-27T17:34:58.527+0300	INFO	persisted to disk	{"blocks":
 16, "keys": 11109, "headerHeight": 216770, "blockHeight": 216769,
 "took": "52.43925ms"}
```
Average block persistence speed: 610.33 block/s
Average blocks number for each persist log: 752.61

Close #3699

Signed-off-by: Ekaterina Pavlova <ekt@morphbits.io>
2024-11-29 13:37:50 +03:00
..
blockfetcher blockfetcher: fix block enqueue logic 2024-11-29 13:37:50 +03:00
helpers/rpcbroadcaster *: replace interface{} with any keyword 2023-04-04 13:22:42 +03:00
metrics services: update logs flush after services shutdown 2024-02-27 15:10:51 +03:00
notary *: fix linter exhaustive errors 2024-09-26 13:29:03 +03:00
oracle neofs: add pool support for NeoFS operations 2024-11-28 16:13:36 +03:00
rpcsrv rpcsrv/tests: simplify tests with parsed test contract hash 2024-11-26 00:26:06 +03:00
stateroot *: improve for loop syntax 2024-08-30 21:45:18 +03:00