[
https://issues.apache.org/jira/browse/HADOOP-3517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12603523#action_12603523
]
Sharad Agarwal commented on HADOOP-3517:
----------------------------------------
{quote} We probably need to track opened but not yet closed files along with
ramManager.close and then get waitForDataToMerge to return a boolean indicating
that the InMemMergeThread should gracefully exit {quote}
would just calling doInMemMerge after the _while (!exitInMemMerge)_ loop in
InMemFSMergeThread work?
few other observations:
1. The condition in _ShuffleRamManager.reserve_ is not related to condition in
_ShuffleRamManager.waitForDataToMerge()_. So there could be situations (depends
on the various thresholds set) when the merge thread is waiting for thresholds
to be met; and at the same time shuffle is stalled waiting for merge to happen.
2. i think the _RamManger.reserve(int requestedSize, InputStream in)_ interface
could be simplied to _RamManger.reserve(int requestedSize)_. There is no real
need to close the connection in reserve method. The connection could be created
after the call to reserve in getMapOutput method.
> The last InMemory merge may be missed
> -------------------------------------
>
> Key: HADOOP-3517
> URL: https://issues.apache.org/jira/browse/HADOOP-3517
> Project: Hadoop Core
> Issue Type: Bug
> Components: mapred
> Affects Versions: 0.18.0
> Reporter: Devaraj Das
> Assignee: Arun C Murthy
> Priority: Blocker
> Fix For: 0.18.0
>
>
> This is post HADOOP-3366. The inmem merge thread has the loop:
> {code}
> while (!exitInMemMerge) {
> ramManager.waitForDataToMerge();
> doInMemMerge();
> }
> {code}
> The fetchOutputs, at the end of copying everything, does the following:
> {code}
> exitInMemMerge = true;
> ramManager.close();
> {code}
> Now if the merge thread is doing a merge (inside the doInMemMerge method)
> when the exitInMemMerge is set to true, the loop will break and the last
> merge of the files that got shuffled recently will be skipped.
> ramManager.close(), that internally does a final notify to the merge thread
> also won't have any effect in this case.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.