[
https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Phabricator updated HBASE-3793:
-------------------------------
Attachment: D5835.1.patch
mbautin requested code review of "[jira] [HBASE-3793] [89-fb] Fix TestHRegion
failure with zero-byte expected array in compare-and-put".
Reviewers: Liyin, Kannan, JIRA
Passing a zero-byte expected value to checkAndPut and similar methods now
means we are expecting to see a zero-byte value, not a non-existent value. This
should have been part of rHBASEEIGHTNINEFBBRANCH1391219.
TEST PLAN
TestHRegion
REVISION DETAIL
https://reviews.facebook.net/D5835
AFFECTED FILES
src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
MANAGE HERALD DIFFERENTIAL RULES
https://reviews.facebook.net/herald/view/differential/
WHY DID I GET THIS EMAIL?
https://reviews.facebook.net/herald/transcript/13821/
To: Liyin, Kannan, JIRA, mbautin
> HBASE-3468 Broke checkAndPut with null value
> --------------------------------------------
>
> Key: HBASE-3793
> URL: https://issues.apache.org/jira/browse/HBASE-3793
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.92.0
> Reporter: Lars George
> Assignee: Ming Ma
> Priority: Blocker
> Fix For: 0.92.0
>
> Attachments: D5835.1.patch, HBASE-3793.patch, HBASE-3793-TRUNK.patch
>
>
> The previous code called Bytes.equal() which does a check for "null" on the
> left or right argument. Now the comparator calls Bytes.compareTo() - which
> has no check for null. But this is a valid input and checks for existence. I
> actually noticed this running
> https://github.com/larsgeorge/hbase-book/blob/master/ch04/src/main/java/client/CheckAndPutExample.java
> This used to work, now it throws an NPE
> {noformat}
> Caused by: java.lang.NullPointerException
> at org.apache.hadoop.hbase.util.Bytes.compareTo(Bytes.java:854)
> at
> org.apache.hadoop.hbase.filter.WritableByteArrayComparable.compareTo(WritableByteArrayComparable.java:63)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.checkAndMutate(HRegion.java:1681)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.checkAndMutate(HRegionServer.java:1693)
> ... 6 more
> at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithRetries(HConnectionManager.java:1026)
> at org.apache.hadoop.hbase.client.HTable.checkAndPut(HTable.java:750)
> at client.CheckAndPutExample.main(CheckAndPutExample.java:33)
> {noformat}
> Easy fixable, just needs to handle the null value before even calling
> comparator.compareTo().
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira