Mutation.getFamilyMap() crashes on downstream apps.
IOException (or a subtype, such as EOFException)
A downstream app that makes use of the getFamily and differs the order of the columns (and was written to run with any version up to 0.94.x) connected to an HBase 0.95.1.
In my case, I just wrote two simple apps, a java server and a java client, connected to each other. The server sends the new type - public NavigableMap<byte,List<? extends Cell>> getFamilyMap() - while the client expects the old type public Map<byte,List<KeyValue>> getFamilyMap().
Run the server, run the client and fetch the FamilyMap by the getFamilyMap method.
The diagnosis is straightforward. The client crashes with a IOException right after receiving the wrong Map.
The client crashes right after fetching a FamilyMap from the server.
The client crashed right after fetching the FamilyMap object and the exception was clear: EOFException. Something went wrong with the data received from the server. When checking the corresponding source-code on the server, we can see that the return type was changed and it does not match the expected return on the client anymore.
Change made on the source code between HBase-0.94.11 and HBase-0.95.0
Restoring the old return type, marking the corresponding function as deprecated and putting a new function with the new return type.