Repository navigation
Fail the Teradata compute cluster trigger on an unknown operation - #72696
Merged
kaxil merged 3 commits intoSep 9, 2026
Merged
Conversation
The polling loop only exits once the compute profile reaches the status the operation waits for. An operation type the trigger does not recognise never leaves it, so the trigger polls on instead of reporting the bad input. No shipped operator passes such a value, so this is hardening rather than a fault reachable from a Dag. The "Invalid operation" event meant to cover the case sat after the loop, unreachable, as did the two timeout events beside it - the triggerer's own deferral timeout has always superseded those.
rjgoyln
force-pushed
the
fix/teradata-cc-trigger-unreachable-timeout
branch
from
September 8, 2026 12:21
5acb74e to
5bd5756
Compare
rjgoyln
marked this pull request as ready for review
September 8, 2026 16:25
kaxil
approved these changes
Sep 9, 2026
The operator surfaces the trigger's error message verbatim as the task's AirflowException, so a bare "Invalid operation" gave no way to tell which value was rejected. The docstring is now the only place the accepted values are written down, and it named a parameter that does not exist while omitting the two CREATE operations.
Contributor
Author
|
Thanks for catching these! Both points are addressed — I updated the docstring to document all supported operations and fixed the invalid-operation message to include the rejected value. The test expectation has been updated accordingly. |
imrichardwu
pushed a commit
to imrichardwu/airflow
that referenced
this pull request
Sep 11, 2026
…ache#72696) * Fail the Teradata compute cluster trigger on an unknown operation The polling loop only exits once the compute profile reaches the status the operation waits for. An operation type the trigger does not recognise never leaves it, so the trigger polls on instead of reporting the bad input. No shipped operator passes such a value, so this is hardening rather than a fault reachable from a Dag. The "Invalid operation" event meant to cover the case sat after the loop, unreachable, as did the two timeout events beside it - the triggerer's own deferral timeout has always superseded those. * Name the rejected Teradata operation type and correct its docstring The operator surfaces the trigger's error message verbatim as the task's AirflowException, so a bare "Invalid operation" gave no way to tell which value was rejected. The docstring is now the only place the accepted values are written down, and it named a parameter that does not exist while omitting the two CREATE operations.
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.
Summary
The polling loop only exits once the compute profile reaches the status the operation waits for. An operation type the trigger does not recognise never reaches one, so the trigger polls indefinitely instead of reporting the bad input. No shipped operator passes such a value, so this is hardening rather than a fault reachable from a Dag.
The
Invalid operationevent meant to cover the case sits after the loop, unreachable, as do the two timeout events beside it — the triggerer's deferral timeout has always superseded those.Invalid operationthereValueErrorThe status each operation waits for is unchanged, and every event the trigger can still emit keeps its payload.
ValueErrornever leaves the trigger: the sameexcept Exceptionturns it into the same error event, and the operator raises onevent["message"]without inspecting the type.Touches the same method as #72695 but different lines; the two merge cleanly in either order.
Tests
test_run_invalid_operationfails against the pre-change trigger, which yields the missing-profile error instead. The twotest_run_create_successcases pass either way — they cover create operations the existing tests left untested.Was generative AI tooling used to co-author this PR?
Generated-by: Claude Code (Opus 5) following the guidelines