Repository navigation
Native: wait DW_WORKER_POLL_TIMEOUT on polls and check operation names like PHP - #669
Merged
Merged
Conversation
A workflow or activity poll without timeout_seconds now waits max(0, DW_WORKER_POLL_TIMEOUT) seconds (30 by default), as Server 2.10.0's LongPoller does, instead of 5. A query-task poll starts from the same setting, capped by DW_QUERY_TASK_POLL_TIMEOUT. An explicit null wait takes the default, and a requested wait follows Laravel's integer rule from 0 to 60. Signal, update and query names get PHP's validateOperationName errors: empty, over 256 bytes or with control characters. Native keeps its 255-byte storage guard for signal and update names, which PHP's own columns cannot exceed. A query poll from a worker registered without capabilities answered 503; it now polls empty, as PHP does.
|
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.



Part of #325.
Poll waits. Server 2.10.0's
LongPoller: a workflow or activity poll withouttimeout_secondswaitsmax(0, DW_WORKER_POLL_TIMEOUT)seconds, 30 by default. Native waited 5.DW_QUERY_TASK_POLL_TIMEOUT(queryPollTimeoutSeconds).nullwait takes the default, as PHP'snullablerule allows.integerrule, from 0 to 60. The setting itself is not capped.Operation names. Signal, update and query requests now run PHP's
validateOperationNamefirst. Empty names, names over 256 bytes and names with control characters get PHP'svalidation_failedmessages.PHP's signal and update name columns hold 255 bytes, so PHP stores a 256-byte name on SQLite and fails with a database error on MySQL and PostgreSQL. Native keeps its storage guard (
invalid_signal_name/invalid_update_name) for those names and for names of only spaces. The gap list records this.Fixed along the way. A query poll from a worker registered without
capabilitiesanswered 503storage_unavailable. It now polls empty, as PHP'sstringArraydoes.Tests (
tests/execution/poll_waits.rs):Results.
Checkpoint:
docs/rust-server-port-checkpoints/2026-10-22-poll-waits.md.