Repository navigation
Conversation
The standalone client took the job statistics' GPU and process counts and the policy count from the counts an rdcd reply states, not from the entries it carries. A reply that stated 16 GPUs, 64 processes and 32 policies but carried one of each gave rdc_job_get_stats() 16 GPUs, 15 of them stale entries of the caller's struct, and 64 processes, the last 63 read past the reply's processes, and rdc_policy_get() 32 policies, 31 of them read past the reply. The client now counts the entries the reply carries, still rejects more than its arrays hold, and zeroes the job info first. Its other list decoders already check the entries a reply carries against the caller's array. rdc_group_get_all_ids() and rdc_group_field_get_all_ids() rejected 64 ids with RDC_ST_MAX_LIMIT, although rdcd holds and lists up to 64 groups and 64 field groups, so rdci group -l failed with "The max limit reached" once 64 groups existed. They now reject only more than 64 and then leave the count alone; rdc.h says so. rdc_client_replies_tests runs the client against a gRPC service that overstates its counts, on an abstract Unix socket, each check in a child process. It links librdc_client for the generated service and messages, so the process has one copy of them. test_fake_gpu_client.py runs it from the tested prefix and lists 64 groups with rdci against rdcd and the fake amd-smi. All checks fail before this change. Signed-off-by: Adam360x <Adam.pryor@amd.com>
This was referenced Oct 22, 2026
Contributor
Author
|
Reviewed manually, this is a good one that actually has some grpc testing harnesses etc. |
✅ All Policy Checks Passed
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
rdcdreply states, not from the entries it carries. A reply that stated 16 GPUs, 64 processes and 32 policies but carried one of each gaverdc_job_get_stats()15 stale GPU entries and 63 processes read past the reply, andrdc_policy_get()31 policies read past it.rdc_group_get_all_ids()andrdc_group_field_get_all_ids()rejected 64 IDs withRDC_ST_MAX_LIMIT, althoughrdcdholds up to 64 groups and 64 field groups, sordci group -lfailed once 64 groups existed.Technical Details
rdc.hsays so.Issue Tracking
ISSUE ID : #14107
Part of a series of RDC fixes, which #14107 lists. No JIRA ticket.
Test Plan
rdc_client_replies_testsruns the client against a gRPC service that overstates its counts, each check in a child process.test_fake_gpu_client.pyruns it from the tested prefix and lists 64 groups withrdciagainstrdcdand the fake amd-smi. All checks fail before this change.Test Result
Fake-GPU suite: 108 passed, 24 skipped.
tests/ci: 92 passed, 6 skipped.Submission Checklist