Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Adjusted the EMRServerlessStartJobOperator to cancel failed jobs by dominikhei · Pull Request #51883 · apache/airflow · GitHub
Skip to content

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs - #51883

Merged
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run
Jan 14, 2026
Merged

Adjusted the EMRServerlessStartJobOperator to cancel failed jobs#51883
vincbeck merged 5 commits into
apache:mainfrom
dominikhei:emr-cancel-job-run

Conversation

@dominikhei

Copy link
Copy Markdown
Contributor

closes: #42401

I have introduced a cancel_job method to the EMRServerlessHook, which wraps the cancel_job_run method from boto3.

In cases of a non deferrable job run, if an Exception that waiter_max_attempts has been reached is thrown, cancel_job is executed. If deferrable is set to True, the cancellation logic is placed inside execute_complete, as this method evaluates the job state in this case.

@boring-cyborgboring-cyborgBot added area:providers provider:amazon AWS/Amazon - related issues labels Jun 18, 2025
@dominikhei
dominikhei marked this pull request as ready for review June 18, 2025 12:55

@vincbeckvincbeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Comment threadproviders/amazon/src/airflow/providers/amazon/aws/hooks/emr.py Outdated
Comment threadproviders/amazon/src/airflow/providers/amazon/aws/operators/emr.py Outdated
@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.

I'd like to hear more thoughts on that from others.

Apologies if there is an obvious answer, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

@vincbeck

Copy link
Copy Markdown
Contributor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

@dominikhei

dominikhei commented Jun 18, 2025

Copy link
Copy Markdown
ContributorAuthor

I feel like this is a very opinionated decision. I am wondering if this is not something the user should set by using on_failure_callback and not us to take this decision.
I'd like to hear more thoughts on that from others.

Apologies if this is an obvious question, but is there a use case where you would want the job to not be cancelled in EMR if a new one is created due to retries, now running / pending concurrently?

Hard to know all the different user use cases but I think you're correct, I do not see any, so I am probably wrong in my perception :)

That’s true, there’s definetly a point in letting the user decide. As you said lets wait on other opinions :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

@o-nikolas

Copy link
Copy Markdown
Contributor

@o-nikolas What is your take on this? Having thought about it again, this would change the standard behavior that also comes with other AWS operators (e. g. EMR cancels the job on failure, Glue doesn't), speaking more for using on_failure_callback.

It would be a change of standard behaviour and also be a breaking change (the behaviour that the user sees will be noticeably different), so if we went that route we'd need to do a deprecation process. We could argue that it's a bug fix (as you describe, no one would really want the default behaviour we have) and then that would allow us to not have to go through the deprecation process. Or as Vincent said, we could avoid all that and just document a way around this with callbacks.

I personally don't feel too strongly about it and would be okay with either of the three above.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions.

@github-actionsgithub-actionsBot added the stale Stale PRs per the .github/workflows/stale.yml policy file label Aug 19, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

Hey @dominikhei, I might have changed my mind and I think your changes make sense. I agree with you, there is more chances that a user wants their job to be cancelled if the timer times out than not. Are you still around and if so, would you be interested to continue working on this PR?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck Took some time off due to a new job but wanted to get back into contributing regularly so this might be a good start :)

@vincbeck

Copy link
Copy Markdown
Contributor

Please do :) I reopen this PR

@vincbeckvincbeck reopened this Nov 28, 2025
@vincbeck

Copy link
Copy Markdown
Contributor

But please rebase your PR so that it uses the latest up to date code

@vincbeck

Copy link
Copy Markdown
Contributor

Are you still planning to work on it?

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

Are you still planning to work on it?

Yes, however I can not start before this Sunday, should have mentioned that beforehand, sorry.
If this timeline is too slow, please feel free to reassign it.

@vincbeck

Copy link
Copy Markdown
Contributor

No rush at all :) I was just checking :)

@dominikhei

Copy link
Copy Markdown
ContributorAuthor

@vincbeck@o-nikolas Would you still consider this a breaking change?

@vincbeck

Copy link
Copy Markdown
Contributor

I think we can consider it as bug fix

@vincbeck
vincbeck merged commit cbaa369 into apache:mainJan 14, 2026
89 checks passed
jason810496 pushed a commit to jason810496/airflow that referenced this pull request Jan 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
choo121600 pushed a commit to choo121600/airflow that referenced this pull request Feb 22, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…che#51883)
* Adjusted the EMRServerlessStartJobOperator to cancel submited jobs on failure
* Removed hook.cancel_job_run and adjusted the return value of EmrServerlessStartJobTrigger
* Added additional tests for the job cancellation behavior
* Fixed ruff formating errors
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providersprovider:amazonAWS/Amazon - related issuesstaleStale PRs per the .github/workflows/stale.yml policy file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EmrServerlessStartJobOperator does not cancel EMR Serverless job when waiter_max_attempts is reached

3 participants

@dominikhei@vincbeck@o-nikolas