-
Notifications
You must be signed in to change notification settings - Fork 177
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
Add multi-query version of subscribe messages, and dedup queries on the backend. #2278
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Changes
This adds a new version of the websocket API for subscribing that takes multiple queries. This just has the backend changes.
Most of the changes are fairly mechanical, other than the changes in
module_subscription_manager
. TheClientInfo
struct now tracks a set of query hashes for each subscription id, and it tracks a reference count for each query hash that it is subscribed to.When adding and removing subscriptions, we use the reference counts to figure out which queries are actually being remove and added, and the
SubscriptionManager
functions return those queries, so that the code inmodule_subscription_manager.rs
can figure out which queries to evaluate (and send to clients).API and ABI breaking changes
This should just be adding new types, but once all the client SDKs are updated, we should probably make a breaking change to remove the old single versions.
Expected complexity level and risk
2.171
Testing
This has a few basic unit tests.