-
Notifications
You must be signed in to change notification settings - Fork 6.8k
[core] Clean up memory store #55386
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
base: master
Are you sure you want to change the base?
[core] Clean up memory store #55386
Conversation
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @edoakes, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
I've refactored the core memory store component to improve its structure, simplify its API, and enhance its modularity. This involved reorganizing the file paths, removing an unused Get() method, and transitioning to a more flexible dependency injection model for resource management and object lifecycle callbacks.
Highlights
- File Structure Simplification: I've moved the memory_store.h and memory_store.cc files up one directory level, removing an unnecessary nested directory. This cleans up the file path and simplifies includes.
- Memory Store API Refinement: I've removed an overloaded Get() method from CoreWorkerMemoryStore that included a remove_after_get parameter, as it was only used in tests. The core GetImpl method now serves as the single source of truth for object retrieval logic.
- Enhanced Modularity via Dependency Injection: The CoreWorkerMemoryStore constructor now accepts std::function objects for handling object deletion on Put operations and for managing resource release/reacquisition during blocking calls. This removes direct dependencies on ReferenceCounter and RayletClient, making the memory store more independent and easier to test.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
Signed-off-by: Edward Oakes <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request provides a good cleanup of the memory store, removing an unnecessary directory, a test-only API, and decoupling dependencies by injecting functions. This improves modularity and maintainability. However, there's a critical syntax error in core_worker_process.cc
in the new CoreWorkerMemoryStore
constructor call that will prevent compilation. Please see the detailed comment.
…es/mv-mem-store
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
…es/mv-mem-store
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
…es/mv-mem-store
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
…es/mv-mem-store
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
should_delete_object_on_put_(should_delete_object_on_put != nullptr | ||
? should_delete_object_on_put | ||
: [](const ObjectID &object_id) { return false; }), | ||
release_resources_(release_resources != nullptr ? release_resources : []() {}), | ||
reacquire_resources_(reacquire_resources != nullptr ? reacquire_resources | ||
: []() {}), | ||
check_signals_(check_signals != nullptr ? check_signals | ||
: []() { return Status::OK(); }), | ||
unhandled_exception_handler_(unhandled_exception_handler != nullptr | ||
? unhandled_exception_handler | ||
: [](const RayObject &obj) {}), | ||
object_allocator_(object_allocator) {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in source code they'll all always be set right, we shouldn't have this logic then? The real function not being passed is something we shouldn't handle
auto object_request_iter = object_get_requests_.find(object_id); | ||
if (object_request_iter != object_get_requests_.end()) { | ||
auto &get_requests = object_request_iter->second; | ||
for (auto &get_request : get_requests) { | ||
get_request->Set(object_id, object_entry); | ||
// If ref counting is enabled, override the removal behaviour. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there was a ray without ref counting...
…es/mv-mem-store
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
…es/mv-mem-store
blocked on: #55651 |
…es/mv-mem-store
…es/mv-mem-store
…es/mv-mem-store
haven't come back to cleaning this up yet |
This pull request has been automatically marked as stale because it has not had You can always ask for help on our discussion forum or Ray's public slack channel. If you'd like to keep this open, just leave any comment, and the stale label will be removed. |
remove_after_get
flag.Get()
API that was only used in tests.Get()
API that is actually used.