[ 
https://issues.apache.org/jira/browse/HIVE-15221?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated HIVE-15221:
----------------------------------
    Labels: pull-request-available  (was: )

> Improvement for MapJoin checkMemoryStatus, adding gc before throwing Exception
> ------------------------------------------------------------------------------
>
>                 Key: HIVE-15221
>                 URL: https://issues.apache.org/jira/browse/HIVE-15221
>             Project: Hive
>          Issue Type: Improvement
>          Components: Query Processor
>    Affects Versions: 2.0.1, 2.1.0
>            Reporter: Hui Fei
>            Assignee: Hui Fei
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: HIVE-15221.1.patch, stat_gc.png
>
>
> i see in the current master version
> {code:title=MapJoinMemoryExhaustionHandler.java|borderStyle=solid}
>   public void checkMemoryStatus(long tableContainerSize, long numRows)
>   throws MapJoinMemoryExhaustionException {
>     long usedMemory = memoryMXBean.getHeapMemoryUsage().getUsed();
>     double percentage = (double) usedMemory / (double) maxHeapSize;
>     String msg = Utilities.now() + "\tProcessing rows:\t" + numRows + 
> "\tHashtable size:\t"
>         + tableContainerSize + "\tMemory usage:\t" + usedMemory + 
> "\tpercentage:\t" + percentageNumberFormat.format(percentage);
>     console.printInfo(msg);
>     if(percentage > maxMemoryUsage) {
>       throw new MapJoinMemoryExhaustionException(msg);
>     }
>    }
> {code}
> if  {{percentage > maxMemoryUsage}}, then throw 
> MapJoinMemoryExhaustionException
> in my opinion, running is better than fail. after System.gc, ' if percentage 
> > maxMemoryUsage, then throw MapJoinMemoryExhaustionException' maybe better
> And original checking way has a problem: 1) consuming much memory cause gc 
> (e.g young gc), then check after adding row and pass. 2) consuming much 
> memory does not cause gc, then check after adding rows but throw Exception
> sometimes 2) occurs, but it contians less rows than 1).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to