app-server: run initialized rpcs with keyed serialization#17373
Merged
Conversation
99c2450 to
3479ece
Compare
2435f00 to
8514a9b
Compare
3479ece to
c9bf9e4
Compare
8514a9b to
5c883c1
Compare
c9bf9e4 to
7299bcc
Compare
jif-oai
reviewed
Apr 13, 2026
551d1b7 to
7e5a28b
Compare
7299bcc to
ef11e16
Compare
9ed94d1 to
d62963b
Compare
euroelessar
added a commit
that referenced
this pull request
Apr 27, 2026
euroelessar
added a commit
that referenced
this pull request
Apr 27, 2026
d3d5a94 to
56486b1
Compare
56486b1 to
44d44fc
Compare
owenlin0
approved these changes
Apr 28, 2026
owenlin0
left a comment
Collaborator
There was a problem hiding this comment.
looks very reasonable to me! quite a nice declarative API too 👍
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Why
Initialized app-server RPCs no longer need to bottleneck behind one request processor path. Running them concurrently improves responsiveness, but several request families still mutate shared state or depend on ordered side effects. Those stateful families need an auditable serialization contract so concurrency does not reorder thread, config, auth, command, watcher, MCP, or similar state transitions.
This PR keeps that boundary explicit: stateful work is serialized by the smallest useful key, while intentionally read-only or externally concurrent work remains unkeyed. In particular,
thread/listandthread/turns/listexplicitly have no serialization because they primarily read append-only rollout storage and should continue to be served concurrently.What changed
ClientRequest::serialization_scope()inapp-server-protocoland requires every client request definition to declare its serialization behavior.thread/turns/listbehavior.Validation
rustls-webpki 0.103.13; CI is expected to provide the full validation signal.