-
Notifications
You must be signed in to change notification settings - Fork 37
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
External metadata store #1829
Comments
DiscussionResearchI was reviewing the code that exists right now regarding the metadata and the metastore and I think i can summaries the implementation as follows:
Suggestion.The above design can be confusing when trying to follow up the code because of the many different parts. I think it can be simplified and reduce the amount of objects we have to pass around.
This way there will be NO need to pass metadata, metadata_writer, and metadata_client around. All components (that needs metadata) can just use Metadata object. If a node has MetaStore role, the metadata manager itself can become a Handler to the grpc service. This can be done by simply passing the grpc requests to the underlying MetadataStore. |
Thanks for summarizing the metadata store-related components. This looks good to me. A few remarks regarding the original ideas: The The The reason why I wouldn't make the Letting the |
Thank you for clarifying the reason behind it. This definitely improved my view of the design. You explained that Metadata and MetadataWriter holds internally the same writer to talk to the metadata manager. That's exactly the reason why I think this should be a single "Metadata" object which is Read/Write, which can then be used to get a ReadOnly instance of itself which has subset of the functionality. This way you won't need to send Metadata and MetadataWriter almost everywhere when both read/write access is needed. My take on the client is that it exposes the low level store to other components where I think should be guarded by the MetadataManager. The manager should be the only object that can access the store, this will also mean that changes to metadata via the Metadata object will be only handled by the manager, which means it can both update the local view and also propogate the change to other nodes. The Manager can also react to updates from the underlying store (or notification from other nodes that version has been updated) to fetch the updated version from the store and update the local view. And maybe also notify waiters on changes. My idea actually involving dropping the MetadataStoreClient, not make it dependent on the manager. The manager instead uses the store implementation internally directly. Other functionality that is not related to metadata directly (like epoch numbers, ...) can still be exposed over the Manager itself. which will internally use the store to implement. |
No description provided.
The text was updated successfully, but these errors were encountered: