Skip to content
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

[core][refactor] Move node_stats_to_dict to utils.py to avoid importing unnecessary modules #51187

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

kevin85421
Copy link
Member

@kevin85421 kevin85421 commented Mar 9, 2025

Why are these changes needed?

node_stats_to_dict is used by both memory_utils.py and node_head.py, and memory_utils.py imports ray.dashboard.modules.node.node_head. It's better to avoid having a "utils" module import other internal Python modules to avoid nested import or potential circular import.

Related issue number

Checks

  • I've signed off every commit(by using the -s flag, i.e., git commit -s) in this PR.
  • I've run scripts/format.sh to lint the changes in this PR.
  • I've included any doc changes needed for https://docs.ray.io/en/master/.
    • I've added any new APIs to the API Reference. For example, if I added a
      method in Tune, I've added it in doc/source/tune/api/ under the
      corresponding .rst file.
  • I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
  • Testing Strategy
    • Unit tests
    • Release tests
    • This PR is not tested :(

Signed-off-by: kaihsun <[email protected]>
@kevin85421 kevin85421 marked this pull request as ready for review March 9, 2025 05:49
@kevin85421 kevin85421 added the go add ONLY when ready to merge, run all tests label Mar 9, 2025
@@ -358,6 +358,31 @@ def address_tuple(address):
return ip, int(port)


def node_stats_to_dict(message):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add type hints please

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added 75d4f5a

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the type hint is derived from the return type of node_stats.

.

Comment on lines +382 to +383
finally:
message.core_workers_stats.extend(core_workers_stats)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you know why this is in a finally block? very strange pattern

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. The function first clears the field core_workers_stats from the message.
  2. It converts the message into a dict and constructs result["coreWorkersStats"].
  3. finally: if step (2) throws an exception, the field core_workers_stats is set back on the message to avoid side effects.

Signed-off-by: kaihsun <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
go add ONLY when ready to merge, run all tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants