Fix AwaitMessageTriggerFunctionSensor not honoring timeout - #69639
Open
TimurRakhmatullin86 wants to merge 1 commit into
Open
Fix AwaitMessageTriggerFunctionSensor not honoring timeout#69639TimurRakhmatullin86 wants to merge 1 commit into
TimurRakhmatullin86 wants to merge 1 commit into
Conversation
Signed-off-by: Timur Rakhmatullin <174210871+TimurRakhmatullin86@users.noreply.github.com>
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.
AwaitMessageTriggerFunctionSensoraccepts atimeoutparameter and its docstring promises "Time elapsed before the task times out and fails", but neitherdefer()call passedtimeout=, so the trigger could wait indefinitely and the parameter was silently ignored.This applies the same fix that was merged for the sibling
AwaitMessageSensorin #62104 (issue #62097): convert the numeric sensor timeout to atimedeltaand pass it todefer()— here in bothexecuteandexecute_complete, since this sensor re-defers after every processed event.Semantics note: because this sensor re-defers indefinitely by design, the timeout applies to each await cycle rather than to total task runtime — i.e. the task fails (or skips, with
soft_fail=True) if no matching message arrives withintimeoutseconds of the most recent deferral. Total-elapsed semantics would unconditionally kill a healthy, indefinitely-running sensor, so per-cycle is the useful interpretation; happy to adjust if maintainers prefer otherwise.On deferral timeout the standard sensor machinery converts
TaskDeferralTimeoutintoAirflowSensorTimeout, andsoft_failis honored.Adds a regression test asserting the timeout is forwarded on both deferral paths (it was
Nonebefore this fix).