Skip to content

Conversation

@dheerajturaga
Copy link
Member

Move _run_job_via_supervisor from nested function to static method to resolve
"Can't pickle local object" error when launching edge worker jobs on Windows.

The nested function _run_job_via_supervisor inside _launch_job_af3 could not
be pickled by the multiprocessing module on Windows, causing the edge worker
to fail with AttributeError when attempting to spawn child processes for job
execution.

Changes:

  • Extract _run_job_via_supervisor from _launch_job_af3 method scope
  • Convert to static method @staticmethod _run_job_via_supervisor
  • Update Process target reference to EdgeWorker._run_job_via_supervisor
  • Preserve all original functionality and error handling

This fix enables edge worker multiprocessing compatibility on Windows while
maintaining identical behavior on other platforms. The static method approach
ensures the function is picklable and accessible from the module namespace.

AttributeError: Can't pickle local object 'EdgeWorker._launch_job_af3.<locals>._run_job_via_supervisor'

@boring-cyborg boring-cyborg bot added area:providers provider:edge Edge Executor / Worker (AIP-69) / edge3 labels Sep 5, 2025
  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.
@dheerajturaga dheerajturaga force-pushed the bugfix/win-multiproc-pickle-error branch from d49029e to 15db33f Compare September 5, 2025 04:47
@dheerajturaga dheerajturaga force-pushed the bugfix/win-multiproc-pickle-error branch from 15db33f to 07c5a3e Compare September 5, 2025 05:10
@dheerajturaga dheerajturaga force-pushed the bugfix/win-multiproc-pickle-error branch from 07c5a3e to 1cd0524 Compare September 5, 2025 06:12
Copy link
Contributor

@jscheffl jscheffl left a comment

Choose a reason for hiding this comment

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

Works good and look good.
Need to test Windows (later) and then will merge. My last Test with WIndows was with 2.10, thanks that you picked this up and found a gap.

@dheerajturaga
Copy link
Member Author

This is one of several PRs needed to fix #55297

@jscheffl jscheffl merged commit e10966b into apache:main Sep 5, 2025
73 checks passed
@dheerajturaga dheerajturaga deleted the bugfix/win-multiproc-pickle-error branch September 5, 2025 19:05
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
RoyLee1224 pushed a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Sep 30, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 1, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 2, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 3, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 4, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 5, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 5, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 7, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 8, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 9, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 10, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 11, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 12, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 14, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 15, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 17, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 19, 2025
* Fix EdgeWorker multiprocessing pickle error on Windows

  Move _run_job_via_supervisor from nested function to static method to resolve
  "Can't pickle local object" error when launching edge worker jobs on Windows.

  The nested function _run_job_via_supervisor inside _launch_job_af3 could not
  be pickled by the multiprocessing module on Windows, causing the edge worker
  to fail with AttributeError when attempting to spawn child processes for job
  execution.

  Changes:
  - Extract _run_job_via_supervisor from _launch_job_af3 method scope
  - Convert to static method @staticmethod _run_job_via_supervisor
  - Update Process target reference to EdgeWorker._run_job_via_supervisor
  - Preserve all original functionality and error handling

  This fix enables edge worker multiprocessing compatibility on Windows while
  maintaining identical behavior on other platforms. The static method approach
  ensures the function is picklable and accessible from the module namespace.

* Fix clear text url print for secutiry fix

* Cleanup launch job methods to be static methods
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providers provider:edge Edge Executor / Worker (AIP-69) / edge3

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants