You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "vandonr-amz (via GitHub)" <gi...@apache.org> on 2023/06/02 19:35:07 UTC
[GitHub] [airflow] vandonr-amz opened a new pull request, #31691: introducing a default method for deferrable continuation
vandonr-amz opened a new pull request, #31691:
URL: https://github.com/apache/airflow/pull/31691
aims:
- reduce the amount of code we need to write when making operators deferrable
- reduce code sensibility to copy-paste mistakes, both:
- in the text of the messages logged (I made that mistake already)
- in the structure of the trigger events, by making them constants/built in one place
- a unified way to pass events -> makes the code less surprising to read, i.e. easier to understand
it doesn't prevent from using a custom way of doing things if needed, but abstracts away the boilerplate code when nothing interesting happens.
I converted the glue operators to this as a demo. If it's pushed, I can do a round on existing deferrable implems to convert them to this.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1579174749
closing as back-compat issues are going to make this unusable before a while, and having all this code in core with just flags around saying not to use it is bad/dangerous imo
maybe https://github.com/apache/airflow/issues/31718 can be a good alternative.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] eladkal commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "eladkal (via GitHub)" <gi...@apache.org>.
eladkal commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214793265
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
This can be a problem as provider needs to be compatible with Airflow>=2.4.0 but this function will be added on 2.6.2/2.7.0
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
This can be a problem as provider needs to be compatible with Airflow>=2.4.0 but this function will be added on 2.6.2+
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214755283
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
Review Comment:
changing this following the discussion on slack regarding the fact that errors should be thrown in the triggers rather than returned in >=2.6
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1218404231
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
I understand it's the way to go, but it'd be pretty misleading to have an optional param, but you'd have to _know_ that you _have to_ fill it otherwise you break backcompat 🤔
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214876489
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
ok, I'll split it from this. I see how it's a breaking change, but I believe the glue crawler deferrable has not yet been shipped in a provider package, so if this is merged before the next wave, it should be no trouble.
Also, it was a bad implem (from me) because I didn't return the same thing as the non-deferred version, so we can see this more as a fix.
I'll do 3 PRs:
this fix on glue
the core code change
the conversion to the new method
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] eladkal commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "eladkal (via GitHub)" <gi...@apache.org>.
eladkal commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214911770
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
The issue is that you can not use
`TriggerEvent.success`
In provider code because the provider must be compatible with Airflow 2.4
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1577154604
> (1) print "success" to the logs and (2) send xcom.
yeah good idea. I'm not well versed in xcom, but I guess "sending xcom" just means writing some value in the DB ? Probably very doable from the triggerer
> Why not make `execute_complete` the default re-entry point
Yeah I started by doing that, but it creates some trouble with mypy because some operators define this method with slightly different arguments
see https://github.com/apache/airflow/actions/runs/5159348955/jobs/9294276991
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz closed pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz closed pull request #31691: introducing a default method for deferrable continuation
URL: https://github.com/apache/airflow/pull/31691
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] eladkal commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "eladkal (via GitHub)" <gi...@apache.org>.
eladkal commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214793265
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
This may be considered a breaking change. It depends on when we will release the next wave of providers we need to be very carful here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214882340
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
done in #31694
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] dstandish commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "dstandish (via GitHub)" <gi...@apache.org>.
dstandish commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1218349875
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
> but it's the same for the default method and default param. If airflow is in an old version, defer will say it lacks a mandatory parameter, and even if we specify it, we won't find the default method with getattr when we want to call it.
welcome to backcompat puzzles @vandonr-amz . they can be very confusing. in that particular examplethough, i think you _could_ make `method_name` optional in BaseOperator.defer because, the change itself is backward compatable, and then in providers you just have to use the old signature until the min airflow version is >= 2.x (when the signature was changed)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] eladkal commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "eladkal (via GitHub)" <gi...@apache.org>.
eladkal commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214793265
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
This can be a problem as provider needs to be compatible with Airflow>=2.4.0 but this function will be added on 26.2/2.7.0
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] dstandish commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "dstandish (via GitHub)" <gi...@apache.org>.
dstandish commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1577162870
> yeah good idea. I'm not well versed in xcom, but I guess "sending xcom" just means writing some value in the DB ? Probably very doable from the triggerer
The tricky part about it is that triggers run in asyncio, but interactions with database (or custom xcom backend) would probably be non-asyncio blocking calls so, I think the initial solution would probably want to do somithing similar to what we did with logging which is to say, run an "xcom listener" in a thread that reads from a queue, and then when trigger exits with xcom it must just send to that queue. That's my thought anyway.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] dstandish commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "dstandish (via GitHub)" <gi...@apache.org>.
dstandish commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1577237577
> Why not make execute_complete the default re-entry point
>> Yeah I started by doing that, but it creates some trouble with mypy because some operators define this method with slightly different arguments
see https://github.com/apache/airflow/actions/runs/5159348955/jobs/9294276991
Ah, I see... my first thought would be... just ignore those complaints in the providers. They are overriding the method and that's ok. If in future method we want to remove the mypy complaint, we could change the provider method.
Another option, though, if truly nothing interesting is happening, is we could do something more like this:
https://github.com/apache/airflow/blob/main/airflow/models/taskinstance.py#L1683
Here, at some point we added some logic to triggerer where if trigger failed we would send the traceback with next_method == '__fail__'. It's conceivable we could add something here to handle the boring case, without a method on baseoperator... but i'm not sure that's a good idea.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] potiuk commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "potiuk (via GitHub)" <gi...@apache.org>.
potiuk commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1217188957
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
Yes. The way how to use it until 2.7+ (which is not multiple years, but 12 months since we release 2.7) - there has to be a back-compatible way of using it. Unfortunately, vack compatibility of core classses is important.
I think the code to use hte "success" should fall-back to hard-coded version of it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1218343736
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
but it's the same for the default method and default param. If airflow is in an old version, `defer` will say it lacks a mandatory parameter, and even if we specify it, we won't find the default method with `getattr` when we want to call it.
None of this can work I think ? 🤔
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] dstandish commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "dstandish (via GitHub)" <gi...@apache.org>.
dstandish commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1577147048
My thoughts on this one...
Maybe we don't need this change. Maybe better, in the simple "boring" case such as this, to not go back to the task worker at all, only to (1) print "success" to the logs and (2) send xcom. Already, triggers can now print to logs. We'd just have to solve the xcom part I think. And maybe with this in mind, Trigger.success would be better used for simply making the task successful and ending it there, full stop, without having to go back to e.g. a celery worker.
But if we _are_ going to add a default method, the `default` in `execute_complete_default` seems unnecessary. Why not make `execute_complete` the default re-entry point -- defacto it already is. If we're going to add a default re-entry method, that's what i would choose. Either that or something more agnostic such as `trigger_reentry`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] vandonr-amz commented on a diff in pull request #31691: introducing a default method for deferrable continuation
Posted by "vandonr-amz (via GitHub)" <gi...@apache.org>.
vandonr-amz commented on code in PR #31691:
URL: https://github.com/apache/airflow/pull/31691#discussion_r1214923270
##########
airflow/providers/amazon/aws/triggers/glue_crawler.py:
##########
@@ -68,11 +68,8 @@ async def run(self) -> AsyncIterator[TriggerEvent]:
break # we reach this point only if the waiter met a success criteria
except WaiterError as error:
if "terminal failure" in str(error):
- yield TriggerEvent(
- {"status": "failure", "message": f"Glue Crawler creation Failed: {error}"}
- )
- break
+ raise
self.log.info("Status of glue crawl is %s", error.last_response["Crawler"]["State"])
await asyncio.sleep(int(self.poll_interval))
- yield TriggerEvent({"status": "success", "message": "Crawl Complete"})
+ yield TriggerEvent.success(self.crawler_name)
Review Comment:
hmm right...
So you're saying that I can introduce this, but it's gonna be pretty useless because we won't be able to use it until years, when we say that the minimum supported version is 2.7 🤔
Maybe I can introduce it as an `AwsBaseDeferrableOperator` or something, that way it'd be packaged the same way ?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [airflow] dstandish commented on pull request #31691: introducing a default method for deferrable continuation
Posted by "dstandish (via GitHub)" <gi...@apache.org>.
dstandish commented on PR #31691:
URL: https://github.com/apache/airflow/pull/31691#issuecomment-1577255282
@vandonr-amz created issue for the "exit task from trigger" item here https://github.com/apache/airflow/issues/31718
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org