You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Gabriel Reid (JIRA)" <ji...@apache.org> on 2017/04/20 08:19:04 UTC

[jira] [Commented] (HADOOP-14331) HadoopScheduledThreadPoolExecutor broken for periodic task running

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

Gabriel Reid commented on HADOOP-14331:
---------------------------------------

FWIW, I discovered this issue when I started leveraging the code in HadoopScheduledThreadPoolExecutor for an external project. I made a few unsuccessful attempts to fix the issue in the code as it's currently implemented, but in the end found that it was a lot easier to just re-implement HadoopScheduledThreadPoolExecutor and HadoopThreadPoolExecutor to just wrap all submitted Runnables and Callables with a wrapper which catches and logs any exception thrown from the underlying Runnable/Callable. 

This is the approach that I would suggest here -- if that sounds good, let me know and I'll add a patch to do this.

> HadoopScheduledThreadPoolExecutor broken for periodic task running
> ------------------------------------------------------------------
>
>                 Key: HADOOP-14331
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14331
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: common
>    Affects Versions: 3.0.0-alpha3
>            Reporter: Gabriel Reid
>         Attachments: HADOOP-14331_demonstrate_bug.patch
>
>
> The HadoopScheduledThreadPoolExecutor (introduced in HADOOP-12749) is broken for the scheduling of periodic tasks (i.e. for tasks submitted with {{scheduleAtFixedRate}} and {{scheduleAfterFixedDelay}}).
> The behavior of the executor with these methods is that the underlying task is executed once, and then blocks the running thread indefinitely in {{ExecutorHelper::logThrowableFromAfterExecute}}, meaning further executions of the task won't run, and will also block the running thread from running any other tasks.
> A quick scan of the source has shown me that these methods are used on HadoopScheduledThreadPoolExecutor instances in several places in the code base, at least in {{JobHistory}} and {{CleanerService}}, which appears to mean that these classes also no longer function correctly.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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