[
https://issues.apache.org/jira/browse/PIG-4299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Prashant Kommireddi updated PIG-4299:
-------------------------------------
Attachment: PIG-4299_1.patch
Tenured (oldgen) is not always the largest.
In an environment running with larger young gen (so to increase the chances
that object die young), this will be a problem as per the current code which
makes the assumption that the largest pool is "tenured".
Changed the way a pool is determined as tenured. "Old gen" or tenured is the
only memory pool that allows setting usage threshold.
Unit tests pass around SpillableMemoryManager, namely TestDataBag and
TestPOPartialAgg.
> SpillableMemoryManager assumes tenured heap incorrectly
> -------------------------------------------------------
>
> Key: PIG-4299
> URL: https://issues.apache.org/jira/browse/PIG-4299
> Project: Pig
> Issue Type: Bug
> Affects Versions: 0.13.0
> Reporter: Prashant Kommireddi
> Assignee: Prashant Kommireddi
> Fix For: 0.14.0
>
> Attachments: PIG-4299_1.patch
>
>
> {code}
> for (MemoryPoolMXBean b: mpbeans) {
> log.debug("Found heap (" + b.getName() +
> ") of type " + b.getType());
> if (b.getType() == MemoryType.HEAP) {
> /* Here we are making the leap of faith that the biggest
> * heap is the tenured heap
> */
> long size = b.getUsage().getMax();
> totalSize += size;
> if (size > biggestSize) {
> biggestSize = size;
> biggestHeap = b;
> }
> }
> }
> {code}
> A memory pool being the biggest MemoryType.HEAP does not guarantee it being
> tenured? Moreover, we must check whether usage threshold is supported by heap
> before trying to set usage threshold on it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)