You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Lars George (JIRA)" <ji...@apache.org> on 2011/04/16 19:43:05 UTC
[jira] [Created] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
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
Priority: Blocker
Fix For: 0.92.0
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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Assigned] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Ming Ma (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ming Ma reassigned HBASE-3793:
------------------------------
Assignee: Ming Ma
I will follow up and add some unit test for this as well.
> 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: HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Ming Ma (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ming Ma updated HBASE-3793:
---------------------------
Attachment: HBASE-3793-TRUNK.patch
Please find the fix from Lars and unit tests for different scenarios.
> 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: HBASE-3793-TRUNK.patch, HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Lars George (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lars George updated HBASE-3793:
-------------------------------
Attachment: HBASE-3793.patch
Preliminary patch. We need tests for this before commit.
> 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
> Priority: Blocker
> Fix For: 0.92.0
>
> Attachments: HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Hudson (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13050979#comment-13050979 ]
Hudson commented on HBASE-3793:
-------------------------------
Integrated in HBase-TRUNK #1976 (See [https://builds.apache.org/job/HBase-TRUNK/1976/])
> 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: HBASE-3793-TRUNK.patch, HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "stack (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-3793:
-------------------------
Status: Patch Available (was: Open)
> 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
> Priority: Blocker
> Fix For: 0.92.0
>
> Attachments: HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Phabricator (JIRA)" <ji...@apache.org>.
[ 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
[jira] [Commented] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Phabricator (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13469005#comment-13469005 ]
Phabricator commented on HBASE-3793:
------------------------------------
mbautin has closed the revision "[jira] [HBASE-3793] [89-fb] Fix TestHRegion failure with zero-length expected value in compare-and-put".
CHANGED PRIOR TO COMMIT
https://reviews.facebook.net/D5835?vs=19239&id=19287#differential-review-toc
REVISION DETAIL
https://reviews.facebook.net/D5835
COMMIT
https://reviews.facebook.net/rHBASEEIGHTNINEFBBRANCH1393838
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
[jira] [Updated] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "stack (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-3793:
-------------------------
Resolution: Fixed
Hadoop Flags: [Reviewed]
Status: Resolved (was: Patch Available)
Nice one Ming. Thanks. Committed to TRUNK.
> 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: HBASE-3793-TRUNK.patch, HBASE-3793.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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-3793) HBASE-3468 Broke checkAndPut with
null value
Posted by "Phabricator (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13468879#comment-13468879 ]
Phabricator commented on HBASE-3793:
------------------------------------
Kannan has accepted the revision "[jira] [HBASE-3793] [89-fb] Fix TestHRegion failure with zero-length expected value in compare-and-put".
REVISION DETAIL
https://reviews.facebook.net/D5835
BRANCH
fix_test_hregion
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