Conversation
Five samples covering every Nexus handler form: - sync #[Operation] - async #[AsyncOperation] returning WorkflowHandle (SDK-managed start+cancel) - manual #[AsyncOperation] returning an OperationHandlerInterface object (custom token, runtime sync/async choice, own cancel) plus cancellation, context-propagation and multiple-arguments variants. Feature test harness: endpoint-per-test via the gRPC OperatorService, one task queue per scenario, real handlers alongside mocked service/client doubles.
|
FYI link to impl PR temporalio/sdk-php#768 |
# Conflicts: # app/composer.json # app/composer.lock
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e407617b2d
ℹ️ 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".
| ini_set('display_errors', 'stderr'); | ||
| include "../../vendor/autoload.php"; | ||
|
|
||
| $address = \getenv('TEMPORAL_ADDRESS') ?: '127.0.0.1:7233'; |
There was a problem hiding this comment.
Align the handler client with RoadRunner's server address
When Temporal is not running on localhost, the RoadRunner config reads TEMPORAL_HOST/TEMPORAL_PORT, while this workflow client reads only TEMPORAL_ADDRESS; setting either advertised representation alone therefore makes the worker poll one cluster while async Nexus operations try to start their backing workflows on another. This causes hello operations to fail or time out unless users discover that both forms must be set consistently. Use the same address variable in both places; the copied handler workers in NexusCancellation, NexusContextPropagation, and NexusMultipleArguments have the same mismatch.
Useful? React with 👍 / 👎.
- share the base Service and handler contracts instead of copying them per sample - fold the operation-token observation back into HelloCallerWorkflow and drop the extra HelloWithToken workflow, command block and test - resolve the handler address like app.php does, mark UNSUPPORTED_LANGUAGE non-retryable, and give every sample its own endpoint, task queues and RR ports - surface a failed async start instead of deadlocking the manual-operation caller - make the cancellation assertions fail when cancellation stops working - create the test endpoint per class and wait until it resolves
Five samples covering every Nexus handler form:
Feature test harness: endpoint-per-test via the gRPC OperatorService, one task queue per scenario, real handlers alongside mocked service/client doubles.
What was changed
Why?
Checklist
Closes
How was this tested: