Dave Revell created HBASE-6359:
----------------------------------
Summary: KeyValue may return incorrect values after readFields()
Key: HBASE-6359
URL: https://issues.apache.org/jira/browse/HBASE-6359
Project: HBase
Issue Type: Bug
Reporter: Dave Revell
Assignee: Dave Revell
When the same KeyValue object is used multiple times for deserialization using
readFields, some methods may return incorrect values. Here is a sequence of
operations that will reproduce the problem:
# A KeyValue is created whose key has length 10. The private field keyLength
is initialized to 0.
# KeyValue.getKeyLength() is called. This reads the key length 10 from the
backing array and caches it in keyLength.
# KeyValue.readFields() is called to deserialize a new value. The keyLength
field is not cleared and keeps its value of 10, even though this value is
probably incorrect.
# If getKeyLength() is called, the value 10 will be returned.
For example, in a reducer with Iterable<KeyValue>, all values after the first
one from the iterable are likely to return incorrect values from getKeyLength().
The solution is to clear all memoized values in KeyValue.readFields(). I'll
write a patch for this soon.
--
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