Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor the JSON-RPC cache and handling of legacy API subscriptions #854

Merged
merged 46 commits into from
Jul 6, 2023

Conversation

tomaka
Copy link
Contributor

@tomaka tomaka commented Jul 5, 2023

This PR refactors the way the subscriptions (all heads, new heads, finalized heads, runtime version, and storage) of the legacy API are handled.

A task dedicated to this is now spawned in the background, and all these subscriptions now send a message to said task.
This task is also subscribed against the runtime service and propagates the blocks that the runtime service notifies to the JSON-RPC client.

This means that notifications are now sent in a precise order. In particular, a runtime version change is now sent immediately after a best block change when relevant. While this is not something the JSON-RPC client can rely upon, it is more clean to do this nonetheless.

When it comes to storage subscriptions, a side change is that all the keys of all the storage requests are now merged together into one network request. This change doesn't make things particularly faster, but is necessary before #779 can land.

This new task now completely owns the content of the Cache (previously a field in Background).
In order to access the cache, one can send a message to the task rather than lock a mutex. In general I'd like to avoid mutexes in order to be able to guarantee a lack of deadlocks.

While the diff is pretty large, every commit is straight forward, and I'm very confident in the fact that the code works at least as well as before this PR.

tomaka added 30 commits July 4, 2023 08:58
@tomaka tomaka added this pull request to the merge queue Jul 6, 2023
Merged via the queue into smol-dot:main with commit e97f1d3 Jul 6, 2023
@tomaka tomaka deleted the legacy-rpc-task branch July 6, 2023 06:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant