[ 
https://issues.apache.org/jira/browse/HADOOP-15372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Miklos Szegedi updated HADOOP-15372:
------------------------------------
    Description: 
YARN-5641 introduced some cleanup code in the Shell class. It has a race 
condition. {{Shell.

runCommand()}} can be called while/after {{Shell.getAllShells()}} returned all 
the shells to be cleaned up. This new thread can avoid the clean up, so that 
the process held by it can be leaked causing leaked localized files/etc.

I see another issue as well. {{Shell.runCommand()}} has a finally block with a 
{{

process.destroy();}} to clean up. However, the try catch block does not cover 
all instructions after the process is started, so for example we can exit the 
thread and leak the process, if {{

timeOutTimer.schedule(timeoutTimerTask, timeOutInterval);}} causes an exception.

  was:
YARN-5641 introduced some cleanup code in the Shell class. It has a race 
condition. {{Shell.

runCommand()}} can be called while/after {{Shell.getAllShells()}} returned all 
the shells to be cleaned up. This new thread can avoid the clean up, so that 
the process held by it can be leaked causing leaked localized files/etc.

I also see an unrelated issue as well. {{Shell.runCommand()}} has a finally 
block with a {{

process.destroy();}} to clean up. However, the try catch block does not cover 
all instructions after the process is started, so for example we can exit the 
thread and leak the process, if {{

timeOutTimer.schedule(timeoutTimerTask, timeOutInterval);}} causes an exception.


> Race conditions and possible leaks in the Shell class
> -----------------------------------------------------
>
>                 Key: HADOOP-15372
>                 URL: https://issues.apache.org/jira/browse/HADOOP-15372
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 2.10.0, 3.2.0
>            Reporter: Miklos Szegedi
>            Priority: Minor
>
> YARN-5641 introduced some cleanup code in the Shell class. It has a race 
> condition. {{Shell.
> runCommand()}} can be called while/after {{Shell.getAllShells()}} returned 
> all the shells to be cleaned up. This new thread can avoid the clean up, so 
> that the process held by it can be leaked causing leaked localized files/etc.
> I see another issue as well. {{Shell.runCommand()}} has a finally block with 
> a {{
> process.destroy();}} to clean up. However, the try catch block does not cover 
> all instructions after the process is started, so for example we can exit the 
> thread and leak the process, if {{
> timeOutTimer.schedule(timeoutTimerTask, timeOutInterval);}} causes an 
> exception.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to