Repository navigation
Python: wait on partial inputs when a step also has a no-input function - #14732
Open
KVR Vishnu (VISHNU0906) wants to merge 1 commit into
Open
KVR Vishnu (VISHNU0906) wants to merge 1 commit into
KVR Vishnu (VISHNU0906) wants to merge 1 commit into
Conversation
A message that fills only part of a targeted function should wait, even if another function on the same step needs no input (or only step context) and is already ready. Check missing inputs on the targeted function alone in both the local and Dapr process runtimes. Fixes microsoft#14729 Signed-off-by: KVR Vishnu <46535652+VISHNU0906@users.noreply.github.com>
KVR Vishnu (VISHNU0906)
temporarily deployed
to
github-app-auth
November 6, 2026 23:34 — with
GitHub Actions
Inactive
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are recorded for the target-specific function readiness change.
No open issues 🎉
What changed in this PR
Fixes #14729 by making Python process steps check readiness only for the function targeted by a message. This lets partial inputs wait for completion without a no-input sibling causing a function-name mismatch.
Changes:
- Apply target-specific readiness checks in both local and Dapr runtimes.
- Add regression coverage for no-input and context-only siblings, plus direct invocation of a no-input function.
- Add an end-to-end relay fan-in test matching the reported issue.
| File | Description |
|---|---|
python/tests/unit/processes/local_runtime/test_local_step.py |
Tests partial-input waiting and targeted no-input invocation. |
python/tests/unit/processes/local_runtime/test_local_process.py |
Adds an end-to-end relay fan-in regression test. |
python/tests/unit/processes/dapr_runtime/test_step_actor.py |
Tests partial-input waiting in the Dapr actor. |
python/semantic_kernel/processes/local_runtime/local_step.py |
Checks only the targeted function’s missing inputs. |
python/semantic_kernel/processes/dapr_runtime/actors/step_actor.py |
Applies the same readiness logic to Dapr steps. |
Review effort: Balanced
This branch was previously deployed
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.
Motivation and Context
A process step that has both
add(a, b)and a no-inputreset()raisesProcessTargetFunctionNameMismatchExceptionwhen a message fills only part ofadd. The same wiring withoutreset()waits correctly. Caught in #14729 by PRABHU KIRAN VANDRANKI (@VANDRANKI) (thanks again for the repro and the clear root-cause write-up).Fixes #14729
Description
In
LocalStep.handle_messageand the matchingStepActor.handle_message, only inspect the function the message targets. If that function still has missing inputs, log and wait. A sibling that needs no input (or only step context) is always ready and must not count as "became invocable because of this message."Adds local-step coverage for no-input and step-context-only siblings, a control that still runs a no-input function when it is the target, a Dapr step-actor case, and an end-to-end
ProcessBuilderfan-in with a relay (the issue shape).Contribution Checklist