Daniel Standish created AIRFLOW-6397:
----------------------------------------

             Summary: Check for `sub_process` before trying to get pid in bash 
operator on kill
                 Key: AIRFLOW-6397
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-6397
             Project: Apache Airflow
          Issue Type: Bug
          Components: operators
    Affects Versions: 1.10.7
            Reporter: Daniel Standish
            Assignee: Daniel Standish


test {{test_mark_success_no_kill}} in {{TestLocalTaskJob}} is very flakey

i found that one reason is that the test may attempt to kill the task before 
the subprocess is created and stored as an attribute

For example:
{code}

[2019-12-29 15:03:51,963] {bash_operator.py:116} INFO - Running command: sleep 
600
[2019-12-29 15:03:51,967] {helpers.py:315} INFO - Sending Signals.SIGTERM to 
GPID 57093
[2019-12-29 15:03:51,968] {taskinstance.py:913} ERROR - Received SIGTERM. 
Terminating subprocesses.
[2019-12-29 15:03:51,970] {bash_operator.py:143} INFO - Sending SIGTERM signal 
to bash process group
[2019-12-29 15:03:51,970] {taskinstance.py:913} ERROR - Received SIGTERM. 
Terminating subprocesses.
[2019-12-29 15:03:51,982] {bash_operator.py:143} INFO - Sending SIGTERM signal 
to bash process group
[2019-12-29 15:03:51,982] {taskinstance.py:1078} ERROR - 'BashOperator' object 
has no attribute 'sub_process'
Traceback (most recent call last):
  File "/Users/dstandish/code/airflow/airflow/models/taskinstance.py", line 
945, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/Users/dstandish/code/airflow/airflow/operators/bash_operator.py", line 
123, in execute
    preexec_fn=pre_exec)
  File "/Users/dstandish/.pyenv/versions/3.7.5/lib/python3.7/subprocess.py", 
line 800, in __init__
    restore_signals, start_new_session)
  File "/Users/dstandish/.pyenv/versions/3.7.5/lib/python3.7/subprocess.py", 
line 1505, in _execute_child
    part = os.read(errpipe_read, 50000)
  File "/Users/dstandish/code/airflow/airflow/models/taskinstance.py", line 
914, in signal_handler
    task_copy.on_kill()
  File "/Users/dstandish/code/airflow/airflow/operators/bash_operator.py", line 
144, in on_kill
    os.killpg(os.getpgid(self.sub_process.pid), signal.SIGTERM)
AttributeError: 'BashOperator' object has no attribute 'sub_process'
[2019-12-29 15:03:51,988] {taskinstance.py:1123} INFO - Marking task as 
FAILED.dag_id=test_mark_success, task_id=task1, execution_date=20160101T000000, 
start_date=20191229T230351, end_date=20191229T230351
[2019-12-29 15:03:52,022] {helpers.py:281} INFO - Process 
psutil.Process(pid=57093, status='terminated') (57093) terminated with exit 
code 1
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to