-
Notifications
You must be signed in to change notification settings - Fork 112
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
Move non-critical metadata out of Session #595
Comments
Is this still on-track planned for MS 0.13.0? |
I'm trying to think about how to approach this. Some constraints and observations - many already mentioned by you:
To me it looks very hard, if even possible, to satisfy those constraints.
Such outside metadata fetcher would also need some additional APIs if it were to avoid refetching keyspaces and tables. If someone has a nice idea on how to make this split, I'm listening. If not, maybe its better to keep metadata fetching generally as-is, but provide:
|
(Proposal based on the discussion in #574, credit to @wyfo for the idea)
By default, the
Session
fetches full schema metadata, but only a small part of it is necessary for the session to work properly - currently, we only need keyspace replication info and per-table partitioners. If the amount of items in the schema is large, the metadata may be large in size as well. Considering that not everybody needs this information, this can lead to wasted cluster load, bandwidth and RAM.Currently, we allow preventing non-essential metadata from being fetched via the
fetch_schema_metadata
configuration option, and restrict the keyspaces for which metadata is fetched at all viakeyspaces_to_fetch
. However, those options are opt-out rather than opt-in, and it's hard to manage the lifetime of the metadata (somebody might want to fetch schema metadata once and consume it somehow, and then deallocate it - it's not possible right now).To reduce the waste, we could move the logic that fetches full metadata outside the
Session
, and the session would just keep the keyspace replication info and per-table partitioners. The ability to fetch full metadata could be moved to a separate module. We could provide abstractions that allow better control over what metadata is being fetched and when, and allow better control over the lifetime of this metadata.Some things to consider before designing/implementing the solution:
The text was updated successfully, but these errors were encountered: