[ https://issues.apache.org/jira/browse/TEZ-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15169536#comment-15169536
]
Siddharth Seth commented on TEZ-1911:
-------------------------------------
According to findbugs
{code}
Unsynchronized access at MergeManager.java:[line 1213]
Unsynchronized access at MergeManager.java:[line 659]
Unsynchronized access at MergeManager.java:[line 662]
{code}
Don't think line 659 and line 662 are valid - synchronized on the same mergeManager instance.
Line 1213 is primarily used for tests and can be synchronized. That should fix this. [~rajesh.balamohan]
- does that sound correct ?
> MergeManager's unconditionalReserve() should check for memory limits before allocating
memory to IntermediateMemoryToMemoryMerger
> ---------------------------------------------------------------------------------------------------------------------------------
>
> Key: TEZ-1911
> URL: https://issues.apache.org/jira/browse/TEZ-1911
> Project: Apache Tez
> Issue Type: Bug
> Reporter: Rajesh Balamohan
> Assignee: Rajesh Balamohan
> Fix For: 0.8.3
>
> Attachments: TEZ-1911.1.patch, TEZ-1911.2.patch, TEZ-1911.3.patch
>
>
> Currently, IntermediateMemoryToMemoryMerger invokes unconditionalReserve() to get the
memory needed for intermediate mem-to-mem merging. It could potentially cause issue in the
following scenario
> 1. tez.runtime.io.sort.factor set to 100 and assume shuffled data (e.g 60% memory occupied)
haven't reached TEZ_RUNTIME_SHUFFLE_MERGE_PERCENT_DEFAULT
> 2. Assume that it reaches the sort.factor threshold before reaching merge threshold.
This would kick in IntermediateMemoryToMemoryMerger.
> In IntermediateMemoryToMemoryMerger, it would try to allocate additional 60% without
any boundary checks. This could lead to OOM depending on the tez.runtime.io.sort.mb setting.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
|