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 2020/01/12 03:29:54 UTC
[GitHub] [airflow] sarutak commented on a change in pull request #7128:
[AIRFLOW-6529] Pickle error occurs when the scheduler tries to run on macOS.
sarutak commented on a change in pull request #7128: [AIRFLOW-6529] Pickle error occurs when the scheduler tries to run on macOS.
URL: https://github.com/apache/airflow/pull/7128#discussion_r365555136
##########
File path: tests/test_utils/mock_executor.py
##########
@@ -36,10 +36,17 @@ def __init__(self, do_update=True, *args, **kwargs):
self.history = []
# All the tasks, in a stable sort order
self.sorted_tasks = []
- self.mock_task_results = defaultdict(lambda: State.SUCCESS)
+
+ # If multiprocessing runs in spawn mode,
+ # arguments are to be pickled but lambda is not picclable.
+ # So we should pass self.success instead of lambda.
Review comment:
If we run `TestSchedulerJob.test_retry_still_in_executor` on macOS, we will get following stack-trace.
```
File "/Users/kou/work/oss/airflow/airflow/jobs/scheduler_job.py", line 1499, in _execute
self._execute_helper()
File "/Users/kou/work/oss/airflow/airflow/jobs/scheduler_job.py", line 1532, in _execute_helper
self.processor_agent.start()
File "/Users/kou/work/oss/airflow/airflow/utils/dag_processing.py", line 353, in start
self._process.start()
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/context.py", line 283, in _Popen
return Popen(process_obj)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/popen_spawn_posix.py", line 32, in __init__
super().__init__(process_obj)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/popen_fork.py", line 19, in __init__
self._launch(process_obj)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/popen_spawn_posix.py", line 47, in _launch
reduction.dump(process_obj, fp)
File "/opt/python3/3.8.1/lib/python3.8/multiprocessing/reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'MockExecutor.__init__.<locals>.<lambda>'
```
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services