You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Demai Ni (JIRA)" <ji...@apache.org> on 2013/06/21 04:05:19 UTC

[jira] [Updated] (HBASE-8780) a column Family can have VERSIONS less than zero

     [ https://issues.apache.org/jira/browse/HBASE-8780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Demai Ni updated HBASE-8780:
----------------------------

    Attachment: HBASE-8780-test.txt
                HBASE-8780-0.94.8-v0.patch

the fix moves the error checking from constructor to the setters with minor twist. 

Fix is built and tested against 94.8. Thanks for reviewing this. 
                
> a column Family can have VERSIONS less than zero 
> -------------------------------------------------
>
>                 Key: HBASE-8780
>                 URL: https://issues.apache.org/jira/browse/HBASE-8780
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.94.8
>            Reporter: Demai Ni
>            Priority: Trivial
>         Attachments: HBASE-8780-0.94.8-v0.patch, HBASE-8780-test.txt
>
>
> User can create/alter a columnfam and set its VERSION(aka maxVERSIONS) to a negative or zero value. Although there is a checking in HColumnDesciptor#construtor, hbase shell command will invoke the setter(setMaxVersions and setMinVersions) directly, hence by pass the checking.  For example:
> {code:title=set VERSIONS = -1}
> hbase(main):016:0> create 't5_dn',{NAME=>'cf1',VERSIONS=>-1}
> 0 row(s) in 1.0420 seconds
> hbase(main):017:0> put 't5_dn','row1','cf1:q1','row1cf1_v1'
> 0 row(s) in 0.0700 seconds
> hbase(main):018:0> scan 't5_dn'
> ROW                   COLUMN+CELL                                              
> 0 row(s) in 0.0090 seconds
> hbase(main):019:0> describe 't5_dn'
> DESCRIPTION                                          ENABLED                    
> 't5_dn', {NAME => 'cf1', REPLICATION_SCOPE => '0',  true                      
> KEEP_DELETED_CELLS => 'false', COMPRESSION => 'NONE                            
> ', ENCODE_ON_DISK => 'true', BLOCKCACHE => 'true',                            
> MIN_VERSIONS => '0', DATA_BLOCK_ENCODING => 'NONE',                            
>  IN_MEMORY => 'false', BLOOMFILTER => 'NONE', TTL =                            
> > '2147483647', VERSIONS => '-1', BLOCKSIZE => '655                            
> 36'}                                                                          
> 1 row(s) in 0.0410 seconds
> {code}
> above example shows VERSIONS => '-1', and put/scan doesn't keep the data

--
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