mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2025-01-06 23:50:35 +00:00
119ca27994
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> |
||
---|---|---|
.. | ||
compiler | ||
config | ||
consensus | ||
core | ||
crypto | ||
encoding | ||
interop | ||
io | ||
neorpc | ||
neotest | ||
network | ||
rpcclient | ||
services | ||
smartcontract | ||
util | ||
vm | ||
wallet |