mobuchowski opened a new pull request, #68708: URL: https://github.com/apache/airflow/pull/68708
### Why By default the OpenLineage listener emits each task-level event from a forked child process (os.fork() with no exec). That child inherits the task runner's connection to the Airflow supervisor; if there are issues with that connection - it can hang. There were a bunch of issues with that fixed in 3.2.x release - like #66574 #65714 #66573 #67115 #66572 - but we still support earlier ones like 3.1.x line. ### What Add an opt-in `[openlineage] execute_in_thread` option (default False). When enabled, task-level emission runs in a time-bounded daemon thread instead of forking: nothing is inherited, so a blocked emission can never strand the task, and the task runner waits at most `[openlineage] execution_timeout` for emission before proceeding. Metadata extraction still runs in-process with full access to the task runtime, so Operators whose extractors resolve Connections, Variables or XComs keep working. The default (fork) path is unchanged. Verified on AWS MWAA and custom GKE Airflow environment. ##### Was generative AI tooling used to co-author this PR? - [ ] Yes (please specify the tool below) Generated-by: [Claude Code] following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions) -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
