Optimize notary service #1577

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

Originally created by @roman-khimov on GitHub (Nov 14, 2025).

I'm always frustrated when requests cause too much overhead for the notary service. This leads to different errors like

error notary/notary.go:396 failed to finalize fallback transaction, waiting for the next block to retry {"hash": "7e6b7984f5fbf39852d5d4c43282715b407cbb9f9f635a3e033aa9999a85cb8e", "error": "failed to enqueue completed transaction: transaction queue is full"}

Describe the solution you'd like

The main problem there is locking. It's uses a very simple scheme which basically means we're processing things single-core including verification proofing. More fine-grained locking and data localization are needed to make OnNewRequest() work mostly concurrently (it's called this way) and newTxCallbackLoop() mostly independently of other processes.

Describe alternatives you've considered

Things work as is, but we have errors we can avoid sometimes.

Originally created by @roman-khimov on GitHub (Nov 14, 2025). ## Is your feature request related to a problem? Please describe. I'm always frustrated when requests cause too much overhead for the notary service. This leads to different errors like > error notary/notary.go:396 failed to finalize fallback transaction, waiting for the next block to retry {"hash": "7e6b7984f5fbf39852d5d4c43282715b407cbb9f9f635a3e033aa9999a85cb8e", "error": "failed to enqueue completed transaction: transaction queue is full"} ## Describe the solution you'd like The main problem there is locking. It's uses a very simple scheme which basically means we're processing things single-core including verification proofing. More fine-grained locking and data localization are needed to make `OnNewRequest()` work mostly concurrently (it's called this way) and `newTxCallbackLoop()` mostly independently of other processes. ## Describe alternatives you've considered Things work as is, but we have errors we can avoid sometimes.
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#1577
No description provided.