[
https://issues.apache.org/jira/browse/HBASE-5204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13186640#comment-13186640
]
Zhihong Yu commented on HBASE-5204:
-----------------------------------
For patch 003, I think we should discourage removing class in the static map.
The code is a short now. We can afford keeping a lot of unused ones.
> Backward compatibility fixes for 0.92
> -------------------------------------
>
> Key: HBASE-5204
> URL: https://issues.apache.org/jira/browse/HBASE-5204
> Project: HBase
> Issue Type: Bug
> Components: ipc
> Affects Versions: 0.92.0
> Reporter: Benoit Sigoure
> Assignee: Benoit Sigoure
> Labels: backwards-compatibility
> Attachments:
> 0001-Add-some-backward-compatible-support-for-reading-old.patch,
> 0002-Make-sure-that-a-connection-always-uses-a-protocol.patch,
> 0003-Change-the-code-used-when-serializing-HTableDescript.patch
>
>
> Attached are 3 patches that are necessary to allow compatibility between
> HBase 0.90.x (and previous releases) and HBase 0.92.0.
> First of all, I'm well aware that 0.92.0 RC4 has been thumbed up by a lot of
> people and would probably wind up being released as 0.92.0 tomorrow, so I
> sincerely apologize for creating this issue so late in the process. I spent
> a lot of time trying to work around the quirks of 0.92 but once I realized
> that with a few very quasi-trivial changes compatibility would be made
> significantly easier, I immediately sent these 3 patches to Stack, who
> suggested I create this issue.
> The first patch is required as without it clients sending a 0.90-style RPC to
> a 0.92-style server causes the server to die uncleanly. It seems that 0.92
> ships with {{\-XX:OnOutOfMemoryError="kill \-9 %p"}}, and when a 0.92 server
> fails to deserialize a 0.90-style RPC, it attempts to allocate a large buffer
> because it doesn't read fields of 0.90-style RPCs properly. This allocation
> attempt immediately triggers an OOME, which causes the JVM to die abruptly of
> a {{SIGKILL}}. So whenever a 0.90.x client attempts to connect to HBase, it
> kills whichever RS is hosting the {{\-ROOT-}} region.
> The second patch fixes a bug introduced by HBASE-2002, which added support
> for letting clients specify what "protocol" they want to speak. If a client
> doesn't properly specify what protocol to use, the connection's {{protocol}}
> field will be left {{null}}, which causes any subsequent RPC on that
> connection to trigger an NPE in the server, even though the connection was
> successfully established from the client's point of view. The fix is to
> simply give the connection a default protocol, by assuming the client meant
> to speak to a RegionServer.
> The third patch fixes an oversight that slipped in HBASE-451, where a change
> to {{HbaseObjectWritable}} caused all the codes used to serialize
> {{Writables}} to shift by one. This was carefully avoided in other changes
> such as HBASE-1502, which cleanly removed entries for {{HMsg}} and
> {{HMsg[]}}, so I don't think this breakage in HBASE-451 was intended.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira