[ 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)