-
Notifications
You must be signed in to change notification settings - Fork 16.7k
Description
Apache Airflow version
3.1.7
If "Other Airflow 3 version" selected, which one?
No response
What happened?
The Sentry integration is not working on Airflow 3.1.7 when using the KubernetesExecutor. Task failures are not reported to Sentry despite correct configuration.
This appears to be a continuation of #52368, which was fixed in PR #57032 for the core task runner path. However, with KubernetesExecutor, tasks execute via apache-airflow-task-sdk, which has a different execution path that does not import airflow.sentry.
Environment
apache-airflow-core: 3.1.7
apache-airflow-task-sdk: 1.1.7
sentry-sdk: 2.54.0
blinker: 1.9.0
Executor: KubernetesExecutor
Configuration
AIRFLOW__SENTRY__SENTRY_ON=true
AIRFLOW__SENTRY__SENTRY_DSN=<valid DSN>
What you think should happen instead?
Task failures should be automatically reported to Sentry when sentry_on=true and a valid DSN is configured, regardless of the executor type.
PR #57032 restored the Sentry import in the core task runner, but the Task SDK (apache-airflow-task-sdk) used by KubernetesExecutor has a separate execution path that never imports airflow.sentry, so ConfiguredSentry.enrich_errors()` is never applied as a decorator on task execution.
How to reproduce
The following diagnostic tasks were run:
- ConfiguredSentry loads correctly when explicitly imported
from airflow.sentry import Sentry
print(type(Sentry))
# <class 'airflow.sentry.ConfiguredSentry'>
The config values are correct, sentry_on resolves to True, and the DSN is set.
- Nothing in the task execution path imports airflow.sentry
# Checked the source of key modules for any reference to airflow.sentry:
airflow.models.taskinstance: NO sentry import
airflow.executors.base_executor: NO sentry import
airflow.task.standard_task_runner: module does not exist in task SDK
# airflow.sentry is not loaded during task execution:
'airflow.sentry' in sys.modules: False
The enrich_errors decorator in ConfiguredSentry is never applied because the module is never imported during task execution via the Task SDK.
- Manual
sentry_sdk.init()works
When explicitly initializing sentry_sdk and calling capture_exception() within a task, errors are successfully reported to Sentry. This confirms the DSN, network connectivity, and sentry-sdk installation are all correct.
import sentry_sdk
sentry_sdk.init(dsn=os.environ["AIRFLOW__SENTRY__SENTRY_DSN"])
try:
raise ValueError("test")
except Exception as e:
sentry_sdk.capture_exception(e)
sentry_sdk.flush(timeout=5)
# ✅ Error appears in Sentry
Operating System
Linux
Versions of Apache Airflow Providers
acryl-datahub-airflow-plugin 1.4.0.5
apache-airflow 3.1.7
apache-airflow-core 3.1.7
apache-airflow-providers-amazon 9.21.0
apache-airflow-providers-celery 3.15.2
apache-airflow-providers-cncf-kubernetes 10.12.3
apache-airflow-providers-common-compat 1.13.0
apache-airflow-providers-common-io 1.7.1
apache-airflow-providers-common-messaging 2.0.2
apache-airflow-providers-common-sql 1.30.4
apache-airflow-providers-docker 4.5.2
apache-airflow-providers-elasticsearch 6.4.4
apache-airflow-providers-fab 3.2.0
apache-airflow-providers-ftp 3.14.1
apache-airflow-providers-git 0.2.2
apache-airflow-providers-google 19.5.0
apache-airflow-providers-grpc 3.9.2
apache-airflow-providers-hashicorp 4.4.3
apache-airflow-providers-http 5.6.4
apache-airflow-providers-microsoft-azure 12.10.3
apache-airflow-providers-mysql 6.4.2
apache-airflow-providers-odbc 4.11.1
apache-airflow-providers-openlineage 2.10.1
apache-airflow-providers-postgres 6.5.3
apache-airflow-providers-redis 4.4.2
apache-airflow-providers-sendgrid 4.2.1
apache-airflow-providers-sftp 5.7.0
apache-airflow-providers-slack 9.6.2
apache-airflow-providers-smtp 2.4.2
apache-airflow-providers-snowflake 6.9.0
apache-airflow-providers-ssh 4.3.1
apache-airflow-providers-standard 1.11.0
apache-airflow-task-sdk 1.1.7
google-cloud-orchestration-airflow 1.19.0
sentry-sdk 2.54.0
Deployment
Official Apache Airflow Helm Chart
Deployment details
KubernetesExecutor
Anything else?
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct