Repository navigation
Conversation
A parked Run has no open Workflow Task, so the server dispatches a query on a task of its own and Core allows nothing beside the answer there. The instance still reported the registered wait set, Core refused the completion, and the query timed out.
The id is Core's, and nothing in this file said where it is defined, so a rename over there would be found by a failing query rather than by grep.
…-parked-run-query.
1 of 3 tasks
Owner
Author
|
Replaced by #105 in the v5 series (phase 1, Signal wake only). The branch stays as a pin. |
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.
This PR fixes queries against a workflow parked on an external stream.
What changed?
When a completion answers a legacy query,
_emit_external_stream_commandsreturns before it adds any external stream command, so neither the stream snapshot nor the progress marker goes out beside the answer._LEGACY_QUERY_IDis held in step with Core'sLEGACY_QUERY_ID. A new integration case parks a run on an empty stream, queries it, then publishes and checks that the run finishes with no failed Workflow Task.Part of AI-198 (epic AI-37).
Why?
A parked run has no open Workflow Task, so the server sends a query on a task of its own. Core allows nothing beside the answer on that task. The instance still added the wait set it had registered, so Core refused the completion and the query timed out. That activation ran no workflow code, so there's nothing new to report anyway.
This PR comes before the channel wake on purpose. The bug is already in Max's prototype, but there it only bites a query against a parked run. From the wake PR on, every completion carries a
WorkflowStreamChannelsreport, so on a channel server every legacy query completion has a command beside its answer. With the wake first, the continue-as-new case intest_continuation.py, where a Signal handler continues as new while a consumer waits, polls with a query and times out. The worker logs Core's refusal: "Workflow completion had a legacy query response along with other commands". With this fix first, the wake lands on a chain where queries already work.How did you test it?
Link to a test plan if any -
Without the fix, the new case times out. With it, the case, the whole external stream suite and
tests/streamspass on the dev server the fixtures start and with-Eagainst a local channel server. The lint set is clean.