Thrift Server crashes after receiving invalid data
The Thrift server may crash if it receives a large amount of invalid data, due to a buffer overrun.
Why this happens
The Thrift server allocates memory to check the validity of data it receives. If it receives a large amount of invalid data, it may need to allocate more memory than is available. This is due to a limitation in the Thrift library itself.
What to do
To prevent the possibility of crashes due to buffer overruns, use the framed and
compact transport protocols. These protocols are disabled by default,
because they may require changes to your client code. The two options to
add to your hbase-site.xml are
hbase.regionserver.thrift.framed
and
hbase.regionserver.thrift.compact
. Set each of these to
true
, as in the XML below. You can also specify the
maximum frame size, using the
hbase.regionserver.thrift.framed.max_frame_size_in_mb
option.<property>
<name>hbase.regionserver.thrift.framed</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.thrift.framed.max_frame_size_in_mb</name>
<value>2</value>
</property>
<property>
<name>hbase.regionserver.thrift.compact</name>
<value>true</value>
</property>