Skip to content

Conversation

edoakes
Copy link
Collaborator

@edoakes edoakes commented Aug 7, 2025

  • Remove unused remove_after_get flag.
  • Remove unnecessary intermediate directory.
  • Remove Get() API that was only used in tests.
  • Make tests use the Get() API that is actually used.
  • Remove the dependency on reference counter and raylet client, inject functions instead.

edoakes added 7 commits August 7, 2025 15:04
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]>
@edoakes edoakes requested a review from a team as a code owner August 7, 2025 21:41
@edoakes edoakes added the go add ONLY when ready to merge, run all tests label Aug 7, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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

  1. 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]>
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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.

edoakes added 14 commits August 7, 2025 16:45
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]>
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]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Comment on lines 135 to 146
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) {}
Copy link
Contributor

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.
Copy link
Contributor

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...

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]>
@ray-gardener ray-gardener bot added the core Issues that should be addressed in Ray Core label Aug 15, 2025
@edoakes
Copy link
Collaborator Author

edoakes commented Aug 15, 2025

blocked on: #55651

@dayshah dayshah self-assigned this Aug 18, 2025
@edoakes
Copy link
Collaborator Author

edoakes commented Aug 18, 2025

haven't come back to cleaning this up yet

Copy link

github-actions bot commented Sep 2, 2025

This pull request has been automatically marked as stale because it has not had
any activity for 14 days. It will be closed in another 14 days if no further activity occurs.
Thank you for your contributions.

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.

@github-actions github-actions bot added the stale The issue is stale. It will be closed within 7 days unless there are further conversation label Sep 2, 2025
@edoakes edoakes added unstale A PR that has been marked unstale. It will not get marked stale again if this label is on it. and removed stale The issue is stale. It will be closed within 7 days unless there are further conversation labels Sep 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Issues that should be addressed in Ray Core go add ONLY when ready to merge, run all tests unstale A PR that has been marked unstale. It will not get marked stale again if this label is on it.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants