[
https://issues.apache.org/jira/browse/HBASE-28010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Beaudreault resolved HBASE-28010.
---------------------------------------
Fix Version/s: 3.0.0-beta-1
Resolution: Fixed
> Connection attributes can become corrupted on the server side
> -------------------------------------------------------------
>
> Key: HBASE-28010
> URL: https://issues.apache.org/jira/browse/HBASE-28010
> Project: HBase
> Issue Type: Bug
> Reporter: Bryan Beaudreault
> Assignee: Ray Mattingly
> Priority: Blocker
> Fix For: 2.6.0, 3.0.0-beta-1
>
>
> In ServerRpcConnection.processOneRpc, it calls processConnectionHeader and
> then immediately calls callCleanupIfNeeded. The parsing of the ByteBuff into
> the ConnectionHeader does not copy the bytes. We keep a reference to
> ConnectionHeader for later use, but since the underlying ByteBuff gets
> released in callCleanupIfNeeded, later requests can override the memory
> locations that the ConnectionHeader points at.
> The unit tests we added dont catch this possibly because they don't send
> enough requests to corrupt the buffers. It happens pretty quickly in a
> deployed cluster.
> We need to copy the List<NameBytesPair> from the ConnectionHeader into a Map
> before the buffer is released. This probably means we should remove
> getConnectionHeader from the RpcCall interface and instead add
> getConnectionAttributes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)