Skip to content

Conversation

@chu11
Copy link
Member

@chu11 chu11 commented Dec 12, 2025

Problem: The job-list.list service is forwards compatible, where older non-streaming clients can communicate with newer services. However it is not backwards compatible, where newer streaming clients can operate with older services.

Add a version field to the "job-list.list" RPC response. This can inform newer clients on what protocol behavior is expected from both older and newer job-list.list services.

@github-actions
Copy link

⚠️ linkcheck failed with status code 2

Comment on lines 331 to 338
(*integer*, OPTIONAL) Specify the current protocol version. If
jobs will be streamed, this field is required and SHALL be set
to 1. If jobs will not be streamed, the protocol version can be
set to 0 or it can be unlisted.

Copy link
Contributor

Choose a reason for hiding this comment

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

Question: seems like you only need the version in the first response, the version should not change in subsequent responses for version >= 1. Should that be called out here?

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh, additionally: This could be due to the diff format, but I'm not seeing the name of the new field, i.e. ..object:: version .

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh, additionally: This could be due to the diff format, but I'm not seeing the name of the new field, i.e. ..object:: version

Doh! I forgot it! :-)

Copy link
Member Author

@chu11 chu11 Dec 13, 2025

Choose a reason for hiding this comment

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

Question: seems like you only need the version in the first response, the version should not change in subsequent responses for version >= 1. Should that be called out here?

I elected to just send it in every response, b/c I figure it would be easier / consistent to have it in every response. I dunno, I felt it would be annoying to have to deal with the first response special compared to the rest of them?

That's me of course. No issue making it just the first response. It is extra bytes being sent on every RPC. On the client side, we might be doing "{ ... s?i }, "version", &version") on every rpc_unpack() call anyways.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, so in the case above, wouldn't the version get set in the first response, then left alone in subsequent unpacks? (I didn't test it though)

Copy link
Member

Choose a reason for hiding this comment

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

My $0.02 would be to leave it off the subsequent responses also, to avoid the unnecessary message overhead. There could be a lot of those responses in a big query result.

@chu11 chu11 force-pushed the rfc43_job_list_version branch from 266195a to 868d130 Compare December 13, 2025 01:25
@github-actions
Copy link

⚠️ linkcheck failed with status code 2

@chu11 chu11 force-pushed the rfc43_job_list_version branch from 868d130 to 9a4c8a0 Compare December 16, 2025 20:25
Problem: The job-list.list service is forwards compatible,
where older non-streaming clients can communicate with newer services.
However it is not backwards compatible, where newer streaming clients
can operate with older services.

Add a version field to the "job-list.list" RPC response.  This can inform
newer clients on what protocol behavior is expected from both older
and newer job-list.list services.
@chu11 chu11 force-pushed the rfc43_job_list_version branch from 9a4c8a0 to 01c321a Compare December 16, 2025 20:27
@chu11
Copy link
Member Author

chu11 commented Dec 16, 2025

re-pushed with a minor tweak, saying that "version" is required to be sent in the first response but not in the following responses.

@github-actions
Copy link

⚠️ linkcheck failed with status code 2

1 similar comment
@github-actions
Copy link

⚠️ linkcheck failed with status code 2

Copy link
Contributor

@grondo grondo left a comment

Choose a reason for hiding this comment

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

LGTM!

@mergify mergify bot added the queued label Dec 18, 2025
@mergify mergify bot merged commit dcc5e61 into flux-framework:master Dec 18, 2025
7 checks passed
@mergify
Copy link
Contributor

mergify bot commented Dec 18, 2025

Merge Queue Status

✅ The pull request has been merged at 01c321a

This pull request spent 5 seconds in the queue, with no time running CI.
The checks were run in-place.

Required conditions to merge
  • any of [🛡 GitHub branch protection]:
    • check-success = docs/readthedocs.org:flux-rfc
    • check-neutral = docs/readthedocs.org:flux-rfc
    • check-skipped = docs/readthedocs.org:flux-rfc
  • any of [🛡 GitHub branch protection]:
    • check-success = make check
    • check-neutral = make check
    • check-skipped = make check
  • any of [🛡 GitHub branch protection]:
    • check-success = validate commits
    • check-neutral = validate commits
    • check-skipped = validate commits

@mergify mergify bot removed the queued label Dec 18, 2025
@chu11 chu11 deleted the rfc43_job_list_version branch December 18, 2025 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants