You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Benoit Sigoure (JIRA)" <ji...@apache.org> on 2010/10/29 20:25:19 UTC
[jira] Created: (HBASE-3170) RegionServer confused about empty row
keys
RegionServer confused about empty row keys
------------------------------------------
Key: HBASE-3170
URL: https://issues.apache.org/jira/browse/HBASE-3170
Project: HBase
Issue Type: Bug
Components: regionserver
Affects Versions: 0.89.20100924, 0.89.20100621
Reporter: Benoit Sigoure
I'm no longer sure about the expected behavior when using an empty row key (e.g. a 0-byte long byte array). I assumed that this was a legitimate row key, just like having an empty column qualifier is allowed. But it seems that the RegionServer considers the empty row key to be whatever the first row key is.
{code}
Version: 0.89.20100830, r0da2890b242584a8a5648d83532742ca7243346b, Sat Sep 18 15:30:09 PDT 2010
hbase(main):001:0> scan 'tsdb-uid', {LIMIT => 1}
ROW COLUMN+CELL
\x00 column=id:metrics, timestamp=1288375187699, value=foo
\x00 column=id:tagk, timestamp=1287522021046, value=bar
\x00 column=id:tagv, timestamp=1288111387685, value=qux
1 row(s) in 0.4610 seconds
hbase(main):002:0> get 'tsdb-uid', ''
COLUMN CELL
id:metrics timestamp=1288375187699, value=foo
id:tagk timestamp=1287522021046, value=bar
id:tagv timestamp=1288111387685, value=qux
3 row(s) in 0.0910 seconds
hbase(main):003:0> get 'tsdb-uid', "\000"
COLUMN CELL
id:metrics timestamp=1288375187699, value=foo
id:tagk timestamp=1287522021046, value=bar
id:tagv timestamp=1288111387685, value=qux
3 row(s) in 0.0550 seconds
{code}
This isn't a parsing problem with the command-line of the shell. I can reproduce this behavior both with plain Java code and with my asynchbase client.
Since I don't actually have a row with an empty row key, I expected that the first {{get}} would return nothing.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] [Updated] (HBASE-3170) RegionServer confused about empty row
keys
Posted by "Benoit Sigoure (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Sigoure updated HBASE-3170:
----------------------------------
Affects Version/s: 0.90.0
0.90.1
0.90.2
0.90.3
0.90.4
0.90.5
0.90.6
0.92.0
0.92.1
> RegionServer confused about empty row keys
> ------------------------------------------
>
> Key: HBASE-3170
> URL: https://issues.apache.org/jira/browse/HBASE-3170
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.89.20100621, 0.89.20100924, 0.90.0, 0.90.1, 0.90.2, 0.90.3, 0.90.4, 0.90.5, 0.90.6, 0.92.0, 0.92.1
> Reporter: Benoit Sigoure
>
> I'm no longer sure about the expected behavior when using an empty row key (e.g. a 0-byte long byte array). I assumed that this was a legitimate row key, just like having an empty column qualifier is allowed. But it seems that the RegionServer considers the empty row key to be whatever the first row key is.
> {code}
> Version: 0.89.20100830, r0da2890b242584a8a5648d83532742ca7243346b, Sat Sep 18 15:30:09 PDT 2010
> hbase(main):001:0> scan 'tsdb-uid', {LIMIT => 1}
> ROW COLUMN+CELL
> \x00 column=id:metrics, timestamp=1288375187699, value=foo
> \x00 column=id:tagk, timestamp=1287522021046, value=bar
> \x00 column=id:tagv, timestamp=1288111387685, value=qux
> 1 row(s) in 0.4610 seconds
> hbase(main):002:0> get 'tsdb-uid', ''
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0910 seconds
> hbase(main):003:0> get 'tsdb-uid', "\000"
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0550 seconds
> {code}
> This isn't a parsing problem with the command-line of the shell. I can reproduce this behavior both with plain Java code and with my asynchbase client.
> Since I don't actually have a row with an empty row key, I expected that the first {{get}} would return nothing.
--
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
[jira] [Updated] (HBASE-3170) RegionServer confused about empty row
keys
Posted by "stack (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-3170:
-------------------------
Priority: Critical (was: Major)
Fix Version/s: 0.96.0
Bad bug. Pulling into 0.96 so we fix it soon.
> RegionServer confused about empty row keys
> ------------------------------------------
>
> Key: HBASE-3170
> URL: https://issues.apache.org/jira/browse/HBASE-3170
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.89.20100621, 0.89.20100924, 0.90.0, 0.90.1, 0.90.2, 0.90.3, 0.90.4, 0.90.5, 0.90.6, 0.92.0, 0.92.1
> Reporter: Benoit Sigoure
> Priority: Critical
> Fix For: 0.96.0
>
>
> I'm no longer sure about the expected behavior when using an empty row key (e.g. a 0-byte long byte array). I assumed that this was a legitimate row key, just like having an empty column qualifier is allowed. But it seems that the RegionServer considers the empty row key to be whatever the first row key is.
> {code}
> Version: 0.89.20100830, r0da2890b242584a8a5648d83532742ca7243346b, Sat Sep 18 15:30:09 PDT 2010
> hbase(main):001:0> scan 'tsdb-uid', {LIMIT => 1}
> ROW COLUMN+CELL
> \x00 column=id:metrics, timestamp=1288375187699, value=foo
> \x00 column=id:tagk, timestamp=1287522021046, value=bar
> \x00 column=id:tagv, timestamp=1288111387685, value=qux
> 1 row(s) in 0.4610 seconds
> hbase(main):002:0> get 'tsdb-uid', ''
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0910 seconds
> hbase(main):003:0> get 'tsdb-uid', "\000"
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0550 seconds
> {code}
> This isn't a parsing problem with the command-line of the shell. I can reproduce this behavior both with plain Java code and with my asynchbase client.
> Since I don't actually have a row with an empty row key, I expected that the first {{get}} would return nothing.
--
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-3170) RegionServer confused about empty
row keys
Posted by "Martin Fiala (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HBASE-3170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13482257#comment-13482257 ]
Martin Fiala commented on HBASE-3170:
-------------------------------------
We are hitting this too, this is a really unexpected behaviour. Why getting empty key should return data of the first row in table? Reproduced in CDH3u4 (0.90.6):
{code}
hbase(main):005:0> create 'emptykey', {NAME=>'data', VERSION=>1}
0 row(s) in 0.2070 seconds
hbase(main):011:0> get 'emptykey', ''
COLUMN CELL
0 row(s) in 0.0120 seconds
hbase(main):006:0> put 'emptykey', 'a', 'data:a', '1234'
0 row(s) in 0.1980 seconds
hbase(main):007:0> put 'emptykey', 'b', 'data:b', '5678'
0 row(s) in 0.0070 seconds
hbase(main):008:0> scan 'emptykey'
ROW COLUMN+CELL
a column=data:a, timestamp=1350989443394, value=1234
b column=data:b, timestamp=1350989450499, value=5678
2 row(s) in 0.0660 seconds
hbase(main):009:0> get 'emptykey', ''
COLUMN CELL
data:a timestamp=1350989443394, value=1234
1 row(s) in 0.0120 seconds
{code}
It works the same way also using thrift.
We can even see, that empty key is supported in fact.
{code}
hbase(main):012:0> put 'emptykey', '', 'data:c', '90'
0 row(s) in 0.0130 seconds
hbase(main):013:0> get 'emptykey', ''
COLUMN CELL
data:c timestamp=1350989869682, value=90
1 row(s) in 0.0120 seconds
hbase(main):018:0> scan 'emptykey'
ROW COLUMN+CELL
column=data:c, timestamp=1350989869682, value=90
a column=data:a, timestamp=1350989933922, value=1234
b column=data:b, timestamp=1350989937820, value=5678
3 row(s) in 0.0180 seconds
{code}
> RegionServer confused about empty row keys
> ------------------------------------------
>
> Key: HBASE-3170
> URL: https://issues.apache.org/jira/browse/HBASE-3170
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.89.20100621, 0.89.20100924, 0.90.0, 0.90.1, 0.90.2, 0.90.3, 0.90.4, 0.90.5, 0.90.6, 0.92.0, 0.92.1
> Reporter: Benoit Sigoure
>
> I'm no longer sure about the expected behavior when using an empty row key (e.g. a 0-byte long byte array). I assumed that this was a legitimate row key, just like having an empty column qualifier is allowed. But it seems that the RegionServer considers the empty row key to be whatever the first row key is.
> {code}
> Version: 0.89.20100830, r0da2890b242584a8a5648d83532742ca7243346b, Sat Sep 18 15:30:09 PDT 2010
> hbase(main):001:0> scan 'tsdb-uid', {LIMIT => 1}
> ROW COLUMN+CELL
> \x00 column=id:metrics, timestamp=1288375187699, value=foo
> \x00 column=id:tagk, timestamp=1287522021046, value=bar
> \x00 column=id:tagv, timestamp=1288111387685, value=qux
> 1 row(s) in 0.4610 seconds
> hbase(main):002:0> get 'tsdb-uid', ''
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0910 seconds
> hbase(main):003:0> get 'tsdb-uid', "\000"
> COLUMN CELL
> id:metrics timestamp=1288375187699, value=foo
> id:tagk timestamp=1287522021046, value=bar
> id:tagv timestamp=1288111387685, value=qux
> 3 row(s) in 0.0550 seconds
> {code}
> This isn't a parsing problem with the command-line of the shell. I can reproduce this behavior both with plain Java code and with my asynchbase client.
> Since I don't actually have a row with an empty row key, I expected that the first {{get}} would return nothing.
--
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