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

Zoltán Borók-Nagy resolved IMPALA-11753.
----------------------------------------
    Resolution: Fixed

> CatalogD OOMkilled due to natively allocated memory
> ---------------------------------------------------
>
>                 Key: IMPALA-11753
>                 URL: https://issues.apache.org/jira/browse/IMPALA-11753
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Catalog
>            Reporter: Zoltán Borók-Nagy
>            Assignee: Zoltán Borók-Nagy
>            Priority: Critical
>              Labels: OOM
>
> We can hit this bug in several installations: 
> https://bugs.openjdk.org/browse/JDK-8257032
> (another nice description of the issue can be found here: 
> https://medium.com/swlh/native-memory-the-silent-jvm-killer-595913cba8e7)
> The problem is that we are creating our own Deflater object and pass it to 
> the constructor of DeflaterOutputStream:
> https://github.com/apache/impala/blob/84fa6d210d3966e5ece8b4ac84ff8bd8780dec4e/fe/src/main/java/org/apache/impala/util/CompressionUtil.java#L47
> This means that Java's DeflaterOutputStream won't assume ownership on the 
> Deflater, and won't invoke its end() method:
> * 
> https://github.com/openjdk/jdk/blob/a249a52501f3cd7d4fbe5293d14ac8d0d6ffcc69/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java#L144
> * 
> https://github.com/openjdk/jdk/blob/a249a52501f3cd7d4fbe5293d14ac8d0d6ffcc69/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java#L246-L247
> The Deflater's methods are implemented in C and allocate native memory. This 
> means that until the GC doesn't destroy the unreachable Deflater objects they 
> can consume quite much native memory. In some scenarios it can even result in 
> OOMKills by the kernel.
> We should solve this issue by either
> * override close() of DeflaterOutputStream (like mentioned in the above blog 
> post)
> * directly invoke end() on the Deflater object in a finally clause



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

Reply via email to