[ 
https://issues.apache.org/jira/browse/EXEC-68?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13481509#comment-13481509
 ] 

Joel McCance edited comment on EXEC-68 at 10/22/12 5:17 PM:
------------------------------------------------------------

Bug is a result of the current timeout polling loop relying on being able to 
add the current system time to the timeout without it overflowing. With very 
large timeout values, the sum of these two items overflows, so the polling loop 
exits immediately.

Attached patch changes behavior of Watchdog#run() so that it does not have to 
add the current millis time to the timeout, as well as a regression test for 
DefaultExecutorTest to reproduce the bug should it recur.
                
      was (Author: jmccance):
    Bug is a result of the current timeout polling loop relying on being able 
to add the current system time to the timeout without it overflowing. With very 
large timeout values, the sum of these two items overflows, so the polling loop 
exits immediately.

Attached patch changes behavior of Watchdog#run() so that it does not have to 
add the current millis time to the timeout.
                  
> Watchdog kills process immediately if timeout is too large
> ----------------------------------------------------------
>
>                 Key: EXEC-68
>                 URL: https://issues.apache.org/jira/browse/EXEC-68
>             Project: Commons Exec
>          Issue Type: Bug
>    Affects Versions: 1.1, 1.1.1
>         Environment: Should exist for all platforms, but specifically 
> identified on Windows 7.
>            Reporter: Joel McCance
>            Priority: Minor
>         Attachments: EXEC-68.patch
>
>
> When using the ExecuteWatchdog with a very large timeout (e.g., 
> Long.MAX_VALUE), the Watchdog immediately destroys the process instead of 
> waiting for the duration of the timeout. For example, the following code 
> snippet would continue immediately:
> {code}
> DefaultExecutor executor = new DefaultExecutor();
> ExecuteWatchdog watchdog = new ExecuteWatchdog(Long.MAX_VALUE);
> executor.setWatchdog(watchdog);
> executor.execute(cmd); // Where `cmd` could be any valid command.
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to