Skip to content

TSH-18123: Add UDS support for coprocessor communication#8348

Closed
theJC wants to merge 7 commits intoapollographql:devfrom
theJC:udsCoprocessorTested
Closed

TSH-18123: Add UDS support for coprocessor communication#8348
theJC wants to merge 7 commits intoapollographql:devfrom
theJC:udsCoprocessorTested

Conversation

@theJC
Copy link
Contributor

@theJC theJC commented Sep 28, 2025

Resolves: #5739 / TSH-18123

Many of Apollo's customers using coprocessor will co-locate their coprocessor with their Router instance on the same host. (ie: within the same pod in kubernetes).

This PR brings parity to coprocessor communication with the Unix Domain Sockets support that both Router request ingress AND subgraph request egress have had for some time. Bypassing the full tcp/ip network stack and allowing data transfer between the Router and the coprocessor using memory space can significantly reduce latency compared to HTTP.

This has been successfully tested locally using a Spring Boot JVM coprocessor configured to listen via UDS.


Checklist

Complete the checklist (and note appropriate exceptions) before the PR is marked ready-for-review.

  • PR description explains the motivation for the change and relevant context for reviewing
  • PR description links appropriate GitHub/Jira tickets (creating when necessary)
  • Changeset is included for user-facing changes
  • Changes are compatible1
  • Documentation2 completed
  • Performance impact assessed and acceptable
  • Metrics and logs are added3 and documented
  • Tests added and passing4
    • Unit tests
    • Integration tests
    • Manual tests, as necessary

Exceptions

Note any exceptions here

Notes

Footnotes

  1. It may be appropriate to bring upcoming changes to the attention of other (impacted) groups. Please endeavour to do this before seeking PR approval. The mechanism for doing this will vary considerably, so use your judgement as to how and when to do this.

  2. Configuration is an important part of many changes. Where applicable please try to document configuration examples.

  3. A lot of (if not most) features benefit from built-in observability and debug-level logs. Please read this guidance on metrics best-practices.

  4. Tick whichever testing boxes are applicable. If you are adding Manual Tests, please document the manual testing (extensively) in the Exceptions.

@theJC theJC requested a review from a team September 28, 2025 22:00
@theJC theJC requested review from a team as code owners September 28, 2025 22:00
@theJC theJC force-pushed the udsCoprocessorTested branch 2 times, most recently from 7dc2e41 to d6b34a2 Compare October 2, 2025 05:23
@theJC
Copy link
Contributor Author

theJC commented Oct 8, 2025

@bnjjj - This is the PR I mentioned in person today.

I do have an alternative branch that I had claude write for me that if you are interested to for inspiration for potential alternative avenue that could be considered, it leverages router's services/http that already has UDS support by adapting to it instead of whats done in this PR.

Here's the potential other direction / alternative: #8389

@theJC theJC force-pushed the udsCoprocessorTested branch from d6b34a2 to d3b4334 Compare October 8, 2025 23:09
@bnjjj
Copy link
Contributor

bnjjj commented Oct 9, 2025

@theJC I answered on the other PR, this one looks good but I think I would prefer to have the other implementation

@theJC theJC marked this pull request as draft October 11, 2025 15:39
@theJC theJC closed this Nov 16, 2025
@abernix abernix mentioned this pull request Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

External Coprocessor: Support for connections to be made with Unix Domain Sockets

2 participants