[
https://issues.apache.org/jira/browse/HBASE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13689439#comment-13689439
]
Demai Ni commented on HBASE-8771:
---------------------------------
[~ctrezzo] , sorry that I didn't explain clear the first time. Although the
setScope is currently only used in such the columndescriptor constructor, the
setScope() is a public method. so user can do this
{code}
...
HTableDescriptor ht = new HTableDescriptor( "t3_dn" );
HColumnDescriptor cfd = new HColumnDescriptor( "cf1" );
cfd.setScope(-1000);
ht.addFamily( cfd );
...
{code}
so if the checking is put inside the constructor (similar as the logic for
minVersions and maxVersions), the above code will not be caught.
> ensure replication_scope's value is either local(0) or global(1)
> ----------------------------------------------------------------
>
> Key: HBASE-8771
> URL: https://issues.apache.org/jira/browse/HBASE-8771
> Project: HBase
> Issue Type: Bug
> Components: Replication
> Affects Versions: 0.94.8
> Reporter: Demai Ni
> Priority: Minor
> Fix For: 0.94.9
>
> Attachments: HBASE-8771-0.94.8-v0.patch
>
>
> For replication_scope, only two values are meaningful:
> {code}
> public static final int REPLICATION_SCOPE_LOCAL = 0;
> public static final int REPLICATION_SCOPE_GLOBAL = 1;
> {code}
> However, there is no checking for that, so currently user can set it to any
> integer value. And all non-zero value will be treated as 1(GLOBAL).
> This jira is to add a checking in HColumnDescriptor#setScope() so that only 0
> and 1 will be accept during create_table or alter_table.
> In the future, we can leverage replication_scope to store for info. For
> example:
> -1: A columnfam is replicated from another cluster in MASTER_SLAVE setup (i.e
> readonly)
> 2 : A columnfam is set MASTER_MASTER
> Probably a major improve JIRA is needed for the future usage. It will be good
> to ensure the scope value at this moment.
> {code:title=Testing|borderStyle=solid}
> hbase(main):002:0> create 't1_dn',{NAME=>'cf1',REPLICATION_SCOPE=>2}
> ERROR: java.lang.IllegalArgumentException: Replication Scope must be either
> 0(local) or 1(global)
> ...
> hbase(main):004:0> alter 't1_dn',{NAME=>'cf1',REPLICATION_SCOPE=>-1}
> ERROR: java.lang.IllegalArgumentException: Replication Scope must be either
> 0(local) or 1(global)
> ...
> {code}
--
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