Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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" + '
Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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('^' + ".*" + ' Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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('^' + ".*" + ' Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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" + ' Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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('^' + ".*" + ' Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck
, '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); } })(); })(); Various fixes on ECS run task operator by vandonr-amz · Pull Request #31838 · apache/airflow · GitHub
Skip to content

Various fixes on ECS run task operator - #31838

Merged
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests
Jun 16, 2023
Merged

Various fixes on ECS run task operator#31838
o-nikolas merged 9 commits into
apache:mainfrom
aws-mwaa:vandonr/tests

Conversation

@vandonr-amz

Copy link
Copy Markdown
Contributor

fixing a bunch of problems around the ECS run task operator:

  • it was checking for task status even when we were not waiting for completion, which would result in a failure if the check happens fast enough because the task would still be pending
  • added a warning about trying to pull logs and not waiting for completion, which is just a weird thing to do, because logs might be truncated, they might not even be there yet. I'm assuming it was always undefined behavior, so I'm going ahead and not even starting the thread if wait for completion is false.
  • added a log when logs are not present (yet) so that if the issue persists, users have a message guiding them towards resolution rather than complete silence

The system tests were not properly configured for logs too. I added the necessary configuration, a cleanup step, and moved the sensor to ecs_fargate so that we can have the normal behavior querying logs in the vanilla ecs test.

Comment on lines +488 to +490
@staticmethod
def _get_ecs_task_id(task_arn: str) -> str:
return task_arn.split("/")[-1]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

doing this because I thought that remembering to update the ecs_task_id every time the arn gets changed was a bit brittle. This method makes the dependency arn->task_id explicit.
Yes it means we're going to recompute it each time we need it, but I think it's negligible.

# A bit brutal to delete the whole group, I know,
# but we don't have the access to the arn of the task which is used in the stream name
# and also those logs just contain "hello world", which is not very interesting.
client.delete_log_group(logGroupName=group_name)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is going to fail if the group does not exist, so in a way it makes sure the log configuration stays correct.

Comment threadairflow/providers/amazon/aws/hooks/ecs.py Outdated
Comment on lines +521 to +523
if not self.wait_for_completion:
return

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.

Whatever logs users were getting for the short period of time without a wait_for_completion they will no longer get. So we're calling it a bug fix with no deprecation?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yeah, idk, we may want to keep the existing behavior, but what I don't like about it is that it made the operator slower just for the sake of maybe getting a couple of logs...
Since we were starting the thread, which slept for 30 seconds (or configured value) before checking if it was stopped, this operator would take 30 seconds to return no matter what, when the job was done in a second and a half.
It's like "don't wait for completion but still wait a bit"

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

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.

Ack, I'll call that quorum then, let's call it a bug fix 👍

Comment on lines +521 to +523
if not self.wait_for_completion:
return

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'd agree with Raph, I dont think this is a desired behavior but more an forgotten edge case. I would call it a bug fix

Comment threadtests/system/providers/amazon/aws/example_ecs.py Outdated
@o-nikolas
o-nikolas merged commit e0f21f4 into apache:mainJun 16, 2023
@vandonr-amz
vandonr-amz deleted the vandonr/tests branch June 16, 2023 19:28
vandonr-amz added a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
o-nikolas pushed a commit that referenced this pull request Jun 23, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in #31838 was reintroduced in #31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
ferruzzi pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Jun 27, 2023
This method is just causing trouble by handling several things, it's hiding the logic.
A bug fixed in apache#31838 was reintroduced in apache#31881 because the check that was skipped on `wait_for_completion` was not skipped anymore.
The bug is that checking the status will always fail if not waiting for completion, because obviously the task is not ready just after creation.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vandonr-amz@uranusjr@o-nikolas@vincbeck