-
Notifications
You must be signed in to change notification settings - Fork 664
Closed
Description
Right now, eval_updates calls ClientConnectionSender::send_message for each client receiving table updates which wakes up a task for each client. This is a lot of overhead while holding the tx lock.
We could instead push all of the table updates to a single worker task in one shot and have that task call ClientConnectionSender::send_message for each client. This would release the tx sooner because we only have to wake up a single task. It would also delay waking up the client tasks immediately which would avoid starvation of the next tx task.
Note, everything after the memo_encode in eval_updates, i.e. the bsatn serialization, should be moved to the worker or client tasks and out of eval_updates so that we release the tx as soon as possible.
| Protocol::Binary => Bsatn(memo_encode::<BsatnFormat>( |
Centril
Metadata
Metadata
Assignees
Labels
No labels