CommandRunner can hang after the main thread exec is finished and has 
inefficient busy loop
-------------------------------------------------------------------------------------------

         Key: NUTCH-151
         URL: http://issues.apache.org/jira/browse/NUTCH-151
     Project: Nutch
        Type: Bug
  Components: indexer  
    Versions: 0.8-dev    
 Environment: all
    Reporter: Paul Baclace


I encountered a case where the JVM of a Tasktracker child did not exit after 
the main thread returned; a thread dump showed only the threads named STDOUT 
and STDERR from CommandRunner as non-daemon threads, and both were doing a 
read().

CommandRunner usually works correctly when the subprocess is expected to be 
finished before the timeout or when no timeout is used. By _usually_, I mean in 
the absence of external thread interrupts.  The busy loop that waits for the 
process to finish has a sleep that is skipped over by an exception; this causes 
the waiting main thread to compete with the subprocess in a tight loop and 
effectively reduces the available cpu by 50%.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to