Add Stand Alone Nexus Operation Support#430
Add Stand Alone Nexus Operation Support#430Quinn-With-Two-Ns wants to merge 1 commit intotemporalio:mainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 73807ea47b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| end | ||
| rescue Error::RPCError => e | ||
| # Retry on deadline exceeded (long-poll timeout), propagate all others including cancellation | ||
| raise unless e.code == Error::RPCError::Code::DEADLINE_EXCEEDED |
There was a problem hiding this comment.
Respect RPC deadlines when polling Nexus results
NexusOperationHandle#result currently retries forever on every DEADLINE_EXCEEDED, which means a caller-provided rpc_options.timeout can never terminate the wait and the call can hang indefinitely for long-running/stuck operations. This differs from other client wait APIs that surface deadline/cancel errors, so users who set explicit time limits will not get the expected timeout behavior.
Useful? React with 👍 / 👎.
What was changed
Add Stand Alone Nexus Operation Support
Why?
So users can stand Nexus Operations outside of workflows
Checklist
Closes
How was this tested:
Integration tests using the latest dev server
Any docs updates needed?
Note for reviewers: Just like Nexus Operations in workflow in Ruby we don't support calling by service interface since that has not been designed yet.
Note
Medium Risk
Adds new client-facing APIs and interceptor/RPC plumbing for starting and managing standalone Nexus operations, which can affect core client behavior and error handling. Risk is mitigated by being additive and covered by new integration tests, but it depends on server-side Nexus support and long-polling behavior.
Overview
Adds experimental standalone Nexus operations to the Ruby SDK client.
Introduces
Client#create_nexus_clientplus operation lifecycle APIs (start_operation/execute_operation,NexusOperationHandle#result/describe/cancel/terminate) and visibility helpers (list_nexus_operations,list_nexus_operation_page,count_nexus_operations). This includes new enums for ID reuse/conflict policies and new errors for already-started and failed operations.Wires the feature through the client interceptor layer and internal gRPC implementation (including polling/long-poll retry semantics), adds RBS signatures, updates README docs, and adds integration tests; the test harness is updated to run a dev server build/config with standalone Nexus enabled.
Reviewed by Cursor Bugbot for commit 73807ea. Bugbot is set up for automated code reviews on this repo. Configure here.