[
https://issues.apache.org/jira/browse/HADOOP-3104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12582931#action_12582931
]
Alejandro Abdelnur commented on HADOOP-3104:
--------------------------------------------
per Chris suggestion, catch blocks of InterruptedException now rethrow the
exception, but as a RuntimeException (instead an IOException as he suggested)
as I think is more appropriate as it is not an IO issue.
per Devaraj's suggestion, refactored to use wait-notify in a ThreadPoolExecutor
subclass that uses the wait-notify to make the execute blocking if there are
not threads. There is no need to use a rejection handler anymore. Also refactor
the exception check into a method and use that method in the different parts of
the maprunner instead duplicating the exception check code.
> MultithreadMapRunner keeps consuming records even if trheads are not available
> ------------------------------------------------------------------------------
>
> Key: HADOOP-3104
> URL: https://issues.apache.org/jira/browse/HADOOP-3104
> Project: Hadoop Core
> Issue Type: Bug
> Affects Versions: 0.16.1
> Environment: all
> Reporter: Alejandro Abdelnur
> Assignee: Alejandro Abdelnur
> Priority: Critical
> Fix For: 0.16.2
>
> Attachments: patch3104.txt, patch3104.txt
>
>
> The ExecutorService execute() method does not block when there are not
> threads available, it queues up the runnables until there are threads.
> The problem is that all key/values are read and kept in memory for the task,
> with large datasets this will create a OOM exception.
> Have to figure out how to use the execute in blocking fashion.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.