You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2021/08/03 08:03:33 UTC

[GitHub] [airflow] SamWheating opened a new pull request #17347: Handle and log exceptions raised during task callback

SamWheating opened a new pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   <!--
   Thank you for contributing! Please make sure that your code changes
   are covered with tests. And in case of new features or big changes
   remember to adjust the documentation.
   
   Feel free to ping committers for the review!
   
   In case of existing issue, reference it using one of the following:
   
   closes: #ISSUE
   related: #ISSUE
   
   How to write a good git commit message:
   http://chris.beams.io/posts/git-commit/
   -->
   Currently, an exception thrown in a task-level callback will be unhandled, so potentially important parts of the callback (for example, sending a slack notification after a job failure) may be skipped. This can make it really difficult to identify and fix errors in callbacks.
   
   To demonstrate, here'a a simple DAG with an error in the callback function:
   ```python
   from airflow.models import DAG
   from airflow import utils
   from airflow.operators.python import PythonOperator
   
   def message():
       print('Hello, world.')
   
   def broken_callback(context=None):
       print(f"Callback started")
       print(f"Task {context['taskID']} finished successfully")  # raises keyError
       print("Callback complete.")
   
   with DAG(f'dag-with-broken-callback', schedule_interval=None, start_date=utils.dates.days_ago(1), ) as dag2:
       
       task = PythonOperator(
           task_id='task',
           python_callable=message,
           on_success_callback=broken_callback,
       )
   ```
   
   The task execution logs will cut off where the exception is thrown:
   ```
   [2021-07-30, 16:25:44 UTC] {logging_mixin.py:109} INFO - Hello, world.
   [2021-07-30, 16:25:44 UTC] {python.py:151} INFO - Done. Returned value was: None
   [2021-07-30, 16:25:44 UTC] {taskinstance.py:1144} INFO - Marking task as SUCCESS. dag_id=dag-with-broken-callback, task_id=task, execution_date=20210730T162540, start_date=20210730T162544, end_date=20210730T162544
   [2021-07-30, 16:25:44 UTC] {local_task_job.py:151} INFO - Task exited with return code 0
   [2021-07-30, 16:25:44 UTC] {logging_mixin.py:109} INFO - Callback started
   <nothing>
   ```
   
   And the unhandled exception will show up in the executor logs:
   ```
   Running <TaskInstance: dag-with-broken-callback.task 2021-07-30T16:25:40.187231+00:00 [queued]> on host 466ea2c2e992
   Traceback (most recent call last):
     File "/usr/local/bin/airflow", line 33, in <module>
       sys.exit(load_entry_point('apache-airflow', 'console_scripts', 'airflow')())
     File "/opt/airflow/airflow/__main__.py", line 40, in main
       args.func(args)
     File "/opt/airflow/airflow/cli/cli_parser.py", line 48, in command
       return func(*args, **kwargs)
     File "/opt/airflow/airflow/utils/cli.py", line 91, in wrapper
       return f(*args, **kwargs)
     File "/opt/airflow/airflow/cli/commands/task_command.py", line 256, in task_run
       _run_task_by_selected_method(args, dag, ti)
     File "/opt/airflow/airflow/cli/commands/task_command.py", line 84, in _run_task_by_selected_method
       _run_task_by_local_task_job(args, ti)
     File "/opt/airflow/airflow/cli/commands/task_command.py", line 141, in _run_task_by_local_task_job
       run_job.run()
     File "/opt/airflow/airflow/jobs/base_job.py", line 245, in run
       self._execute()
     File "/opt/airflow/airflow/jobs/local_task_job.py", line 128, in _execute
       self.handle_task_exit(return_code)
     File "/opt/airflow/airflow/jobs/local_task_job.py", line 163, in handle_task_exit
       self.task_instance._run_finished_callback(error=error)
     File "/opt/airflow/airflow/models/taskinstance.py", line 1377, in _run_finished_callback
       task.on_success_callback(context)
     File "/opt/airflow/dags/test_callback.py", line 10, in broken_callback
       print(f"Task {context['taskID']} finished successfully")  # raises keyError
   KeyError: 'taskID'
   [2021-07-30 16:25:45,078] {sequential_executor.py:66} ERROR - Failed to execute task Command '['airflow', 'tasks', 'run', 'dag-with-broken-callback', 'task', '2021-07-30T16:25:40.187231+00:00', '--local', '--pool', 'default_pool', '--subd
   ir', '/opt/airflow/dags/test_callback.py']' returned non-zero exit status 1..
   [2021-07-30 16:25:45,079] {scheduler_job.py:577} INFO - Executor reports execution of dag-with-broken-callback.task execution_date=2021-07-30 16:25:40.187231+00:00 exited with status failed for try_number 1
   [2021-07-30 16:25:45,129] {dagrun.py:435} INFO - Marking run <DagRun dag-with-broken-callback @ 2021-07-30 16:25:40.187231+00:00: manual__2021-07-30T16:25:40.187231+00:00, externally triggered: True> successful
   ```
   
   By handling this exception and logging it, we can make callback failures much easier to identify and fix. After this change, the task logs look like this:
   ```
   [2021-07-30, 16:26:45 UTC] {logging_mixin.py:109} INFO - Hello, world.
   [2021-07-30, 16:26:45 UTC] {python.py:151} INFO - Done. Returned value was: None
   [2021-07-30, 16:26:45 UTC] {taskinstance.py:1144} INFO - Marking task as SUCCESS. dag_id=dag-with-broken-callback, task_id=task, execution_date=20210730T162642, start_date=20210730T162645, end_date=20210730T162645
   [2021-07-30, 16:26:45 UTC] {local_task_job.py:151} INFO - Task exited with return code 0
   [2021-07-30, 16:26:45 UTC] {logging_mixin.py:109} INFO - Callback started
   [2021-07-30, 16:26:45 UTC] {taskinstance.py:1357} ERROR - Failed when executing on_success_callback
   Traceback (most recent call last):
     File "/opt/airflow/airflow/models/taskinstance.py", line 1355, in _run_finished_callback
       task.on_success_callback(context)
     File "/opt/airflow/dags/test_callback.py", line 10, in broken_callback
       print(f"Task {context['taskID']} finished successfully")  # raises keyError
   KeyError: 'taskID'
   [2021-07-30, 16:26:45 UTC] {local_task_job.py:258} INFO - 0 downstream tasks scheduled from follow-on schedule check
   ```
   
   This removes the stacktrace from the executor logs. If we want to avoid changing this behaviour then we could also re-raise the exception after logging. Thoughts?


-- 
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] ephraimbuddy commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-892573706


   Closing and reopening to trigger tests


-- 
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] ephraimbuddy closed pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy closed pull request #17347:
URL: https://github.com/apache/airflow/pull/17347






-- 
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] ephraimbuddy commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r680145422



##########
File path: airflow/models/taskinstance.py
##########
@@ -1343,18 +1343,27 @@ def _run_finished_callback(self, error: Optional[Union[str, Exception]] = None)
             if task.on_failure_callback is not None:
                 context = self.get_template_context()
                 context["exception"] = error
-                task.on_failure_callback(context)
+                try:
+                    task.on_failure_callback(context)
+                except Exception:
+                    log.exception("Failed when executing execute on_failure_callback:")
         elif self.state == State.SUCCESS:
             task = self.task
             if task.on_success_callback is not None:
                 context = self.get_template_context()
-                task.on_success_callback(context)
+                try:
+                    task.on_success_callback(context)
+                except Exception:

Review comment:
       Nice. I’m suggesting we have a test for this change




-- 
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] ephraimbuddy commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r681521028



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       Oh, never mind. Use the previous method you used. I will need to work on this in a separate PR so we stop using unittest.




-- 
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] ephraimbuddy closed pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy closed pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   


-- 
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] ephraimbuddy commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-892573962


   @ashb please take a look


-- 
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] ephraimbuddy commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-892573706






-- 
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] ephraimbuddy closed pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy closed pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   


-- 
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] SamWheating commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
SamWheating commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r680267508



##########
File path: airflow/models/taskinstance.py
##########
@@ -1343,18 +1343,27 @@ def _run_finished_callback(self, error: Optional[Union[str, Exception]] = None)
             if task.on_failure_callback is not None:
                 context = self.get_template_context()
                 context["exception"] = error
-                task.on_failure_callback(context)
+                try:
+                    task.on_failure_callback(context)
+                except Exception:
+                    log.exception("Failed when executing execute on_failure_callback:")
         elif self.state == State.SUCCESS:
             task = self.task
             if task.on_success_callback is not None:
                 context = self.get_template_context()
-                task.on_success_callback(context)
+                try:
+                    task.on_success_callback(context)
+                except Exception:

Review comment:
       Great suggestion - I've added a test and in doing so I even found a minor bug which has been fixed now. 




-- 
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] ephraimbuddy closed pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy closed pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   


-- 
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] SamWheating commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
SamWheating commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r681810429



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       Ok, is the plan to stop using `unittest` everywhere? I don't mind refactoring the tests in this file, but I'd rather do it in a separate PR. 




-- 
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] github-actions[bot] commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-891622980


   The PR most likely needs to run full matrix of tests because it modifies parts of the core of Airflow. However, committers might decide to merge it quickly and take the risk. If they don't merge it quickly - please rebase it to the latest main at your convenience, or amend the last commit of the PR, and push it with --force-with-lease.


-- 
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] ephraimbuddy commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r682547231



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       Yes. We want to change to using pytest and dag_maker. I'm already working on this file. You can check another one. Thanks @SamWheating 




-- 
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] ephraimbuddy commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-891770159


   Can you rebase @SamWheating 


-- 
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] ephraimbuddy commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r680764255



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       ```suggestion
       def test_success_callback_handles_and_logs_exception(self, dag_maker):
           called = completed = False
   
           def on_success_callable(context):
               nonlocal called, completed
               called = True
               raise KeyError
               completed = True
   
           with dag_maker(
               'test_success_callback_handles_exception',
               end_date=DEFAULT_DATE + datetime.timedelta(days=10),
           ) :
                 task = DummyOperator(
                     task_id='op', email='test@test.test', on_success_callback=on_success_callable
                 )
           dag_maker.create_dagrun()
   ```
   we recently introduced the `dag_maker` fixture so that we can reduce code duplication and also create dagrun whenever we create a dag.




-- 
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] ephraimbuddy closed pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy closed pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   


-- 
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] ephraimbuddy commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r682547231



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       Yes. We want to change to using pytest and dag_maker. I'm already working on this file. You can check another one. Thanks @SamWheating 




-- 
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] SamWheating commented on a change in pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
SamWheating commented on a change in pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#discussion_r681182088



##########
File path: tests/models/test_taskinstance.py
##########
@@ -1743,6 +1743,32 @@ def on_execute_callable(context):
         ti.refresh_from_db()
         assert ti.state == State.SUCCESS
 
+    def test_success_callback_handles_and_logs_exception(self):
+        called = completed = False
+
+        def on_success_callable(context):
+            nonlocal called, completed
+            called = True
+            raise KeyError
+            completed = True
+
+        dag = DAG(
+            'test_success_callback_handles_exception',
+            start_date=DEFAULT_DATE,
+            end_date=DEFAULT_DATE + datetime.timedelta(days=10),
+        )
+        task = DummyOperator(
+            task_id='op', email='test@test.test', on_success_callback=on_success_callable, dag=dag
+        )

Review comment:
       Oh, super neat! However, it looks like TestTaskInstance is a subclass of `unitest.Testcase`, which [doesn't seem to support all uses of pytest fixtures](https://docs.pytest.org/en/6.2.x/unittest.html#pytest-features-in-unittest-testcase-subclasses).  Is there a reason why some test classes are subclasses of unittest.testcase, and others aren't? 
   
   Anyways, I've refactored this test to include all three callback types, but have been having some trouble getting the `dag_maker` fixture to work. Are you able to give me a hand with 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] ephraimbuddy merged pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy merged pull request #17347:
URL: https://github.com/apache/airflow/pull/17347


   


-- 
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] ephraimbuddy commented on pull request #17347: Handle and log exceptions raised during task callback

Posted by GitBox <gi...@apache.org>.
ephraimbuddy commented on pull request #17347:
URL: https://github.com/apache/airflow/pull/17347#issuecomment-893714524


   @SamWheating please rebase again


-- 
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