hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14598) ByteBufferOutputStream grows its HeapByteBuffer beyond JVM limitations
Date Wed, 14 Oct 2015 21:18:07 GMT

    [ https://issues.apache.org/jira/browse/HBASE-14598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14957792#comment-14957792
] 

Hudson commented on HBASE-14598:
--------------------------------

FAILURE: Integrated in HBase-1.2-IT #210 (See [https://builds.apache.org/job/HBase-1.2-IT/210/])
HBASE-14598 ByteBufferOutputStream grows its HeapByteBuffer beyond JVM (stack: rev 34d7971d1a7bed8f732cceb382e2cc52e4a6954c)
* hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBufferOutputStream.java
* hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/IPCUtil.java


> ByteBufferOutputStream grows its HeapByteBuffer beyond JVM limitations
> ----------------------------------------------------------------------
>
>                 Key: HBASE-14598
>                 URL: https://issues.apache.org/jira/browse/HBASE-14598
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.98.12
>            Reporter: Ian Friedman
>            Assignee: Ian Friedman
>             Fix For: 2.0.0, 1.2.0, 1.3.0, 1.1.3
>
>         Attachments: 14598.txt, hbase-14598-v1 (1).patch, hbase-14598-v1.patch, hbase-14598-v1.patch,
hbase-14598-v1.patch
>
>
> We noticed that in returning a Scan against a region containing particularly large (wide)
rows that it is possible during ByteBufferOutputStream.checkSizeAndGrow() to attempt to create
a new ByteBuffer larger than the JVM allows which then throws a OutOfMemoryError. The code
currently caps it at Integer.MAX_VALUE which is actually larger than the JVM allows. This
lead to us dealing with cascading region server death as the RegionServer hosting the region
died, opened on a new server, the client retried the scan, and the new RS died as well. 
> I believe ByteBufferOutputStream should not try to create ByteBuffers that large and
instead throw an exception back up if it needs to grow any bigger. The limit should probably
be something like Integer.MAX_VALUE-8, as that is what ArrayList uses. ref: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/ArrayList.java#221



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message