hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guangxu Cheng (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-16430) RegionServer Group's bug when move tables
Date Fri, 19 Aug 2016 03:23:20 GMT

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

Guangxu Cheng updated HBASE-16430:
----------------------------------
    Description: 
It will be good when move one table at the same time. 
However,will appear abnormal when move two or more tables at once.
For example,move tableA and tableB from Group foo to Group bar:
{code}
hbase(main):001:0> get_rsgroup 'foo'
GROUP INFORMATION                                                                        
                                                                                         
         
Servers:                                                                                 
                                                                                         
         
hbase-rs1:60020                                                                          
                                                                                         

Tables:                                                                                  
                                                                                         
         
tableA                                                                                   
                                                                                         
         
tableB                                                                                   
                                                                                         
         
5 row(s) in 0.2800 seconds

hbase(main):002:0> get_rsgroup 'bar'
GROUP INFORMATION                                                                        
                                                                                         
         
Servers:                                                                                 
                                                                                         
         
hbase-rs2:60020                                                                          
                                                                                         

Tables:                                                                                  
                                                                                         
         
3 row(s) in 0.0050 seconds

hbase(main):003:0> move_rsgroup_tables 'bar',['tableA','tableB']

hbase(main):004:0> get_rsgroup 'foo'
GROUP INFORMATION                                                                        
                                                                                         
         
Servers:                                                                                 
                                                                                         
         
hbase-rs1:60020                                                                          
                                                                                         

Tables:                                                                                  
                                                                                         
         
tableB                                                                                   
                                                                                         
         
4 row(s) in 0.0120 seconds

hbase(main):005:0> get_rsgroup 'bar'
GROUP INFORMATION                                                                        
                                                                                         
         
Servers:                                                                                 
                                                                                         
         
hbase-rs2:60020                                                                          
                                                                                         
Tables:                                                                                  
                                                                                         
         
tableA                                                                                   
                                                                                         
         
tableB                                                                                   
                                                                                         
         
5 row(s) in 0.0130 seconds
{code}
Now, you will be find tableB belongs to Group foo and Group bar.

Implementation of the moveTables as follows:
{code:title=RSGroupInfoManagerImpl.java|borderStyle=solid}
@Override
  public synchronized void moveTables(
      Set<TableName> tableNames, String groupName) throws IOException {
    if (groupName != null && !rsGroupMap.containsKey(groupName)) {
      throw new DoNotRetryIOException("Group "+groupName+" does not exist or is a special
group");
    }

    Map<String,RSGroupInfo> newGroupMap = Maps.newHashMap(rsGroupMap);
    for(TableName tableName: tableNames) {
      if (tableMap.containsKey(tableName)) {
        RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
        src.removeTable(tableName);
        newGroupMap.put(src.getName(), src);
      }
      if(groupName != null) {
        RSGroupInfo dst = new RSGroupInfo(newGroupMap.get(groupName));
        dst.addTable(tableName);
        newGroupMap.put(dst.getName(), dst);
      }
    }
    flushConfig(newGroupMap);
  }
{code}

Should use newGroupMap instead of rsGroupMap:
{code}
RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
{code}
==>
{code}
RSGroupInfo src = new RSGroupInfo(newGroupMap.get(tableMap.get(tableName)));
{code}

  was:
It will be good when move one table at the same time. 
However,will appear abnormal when move two or more tables at once.
For example,move tableA and tableB from Group foo to Group bar:

Now, you will be find tableB belongs to Group foo and Group bar.

Implementation of the moveTables as follows:
{code:title=RSGroupInfoManagerImpl.java|borderStyle=solid}
@Override
  public synchronized void moveTables(
      Set<TableName> tableNames, String groupName) throws IOException {
    if (groupName != null && !rsGroupMap.containsKey(groupName)) {
      throw new DoNotRetryIOException("Group "+groupName+" does not exist or is a special
group");
    }

    Map<String,RSGroupInfo> newGroupMap = Maps.newHashMap(rsGroupMap);
    for(TableName tableName: tableNames) {
      if (tableMap.containsKey(tableName)) {
        RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
        src.removeTable(tableName);
        newGroupMap.put(src.getName(), src);
      }
      if(groupName != null) {
        RSGroupInfo dst = new RSGroupInfo(newGroupMap.get(groupName));
        dst.addTable(tableName);
        newGroupMap.put(dst.getName(), dst);
      }
    }
    flushConfig(newGroupMap);
  }
{code}

Should use newGroupMap instead of rsGroupMap:
{code}
RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
{code}
==>
{code}
RSGroupInfo src = new RSGroupInfo(newGroupMap.get(tableMap.get(tableName)));
{code}


> RegionServer Group's bug when move tables
> -----------------------------------------
>
>                 Key: HBASE-16430
>                 URL: https://issues.apache.org/jira/browse/HBASE-16430
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>    Affects Versions: 2.0.0
>            Reporter: Guangxu Cheng
>             Fix For: 2.0.0
>
>         Attachments: HBASE-16430-v1.patch
>
>
> It will be good when move one table at the same time. 
> However,will appear abnormal when move two or more tables at once.
> For example,move tableA and tableB from Group foo to Group bar:
> {code}
> hbase(main):001:0> get_rsgroup 'foo'
> GROUP INFORMATION                                                                   
                                                                                         
              
> Servers:                                                                            
                                                                                         
              
> hbase-rs1:60020                                                                     
                                                                                         
     
> Tables:                                                                             
                                                                                         
              
> tableA                                                                              
                                                                                         
              
> tableB                                                                              
                                                                                         
              
> 5 row(s) in 0.2800 seconds
> hbase(main):002:0> get_rsgroup 'bar'
> GROUP INFORMATION                                                                   
                                                                                         
              
> Servers:                                                                            
                                                                                         
              
> hbase-rs2:60020                                                                     
                                                                                         
     
> Tables:                                                                             
                                                                                         
              
> 3 row(s) in 0.0050 seconds
> hbase(main):003:0> move_rsgroup_tables 'bar',['tableA','tableB']
> hbase(main):004:0> get_rsgroup 'foo'
> GROUP INFORMATION                                                                   
                                                                                         
              
> Servers:                                                                            
                                                                                         
              
> hbase-rs1:60020                                                                     
                                                                                         
     
> Tables:                                                                             
                                                                                         
              
> tableB                                                                              
                                                                                         
              
> 4 row(s) in 0.0120 seconds
> hbase(main):005:0> get_rsgroup 'bar'
> GROUP INFORMATION                                                                   
                                                                                         
              
> Servers:                                                                            
                                                                                         
              
> hbase-rs2:60020                                                                     
                                                                                         
    
> Tables:                                                                             
                                                                                         
              
> tableA                                                                              
                                                                                         
              
> tableB                                                                              
                                                                                         
              
> 5 row(s) in 0.0130 seconds
> {code}
> Now, you will be find tableB belongs to Group foo and Group bar.
> Implementation of the moveTables as follows:
> {code:title=RSGroupInfoManagerImpl.java|borderStyle=solid}
> @Override
>   public synchronized void moveTables(
>       Set<TableName> tableNames, String groupName) throws IOException {
>     if (groupName != null && !rsGroupMap.containsKey(groupName)) {
>       throw new DoNotRetryIOException("Group "+groupName+" does not exist or is a special
group");
>     }
>     Map<String,RSGroupInfo> newGroupMap = Maps.newHashMap(rsGroupMap);
>     for(TableName tableName: tableNames) {
>       if (tableMap.containsKey(tableName)) {
>         RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
>         src.removeTable(tableName);
>         newGroupMap.put(src.getName(), src);
>       }
>       if(groupName != null) {
>         RSGroupInfo dst = new RSGroupInfo(newGroupMap.get(groupName));
>         dst.addTable(tableName);
>         newGroupMap.put(dst.getName(), dst);
>       }
>     }
>     flushConfig(newGroupMap);
>   }
> {code}
> Should use newGroupMap instead of rsGroupMap:
> {code}
> RSGroupInfo src = new RSGroupInfo(rsGroupMap.get(tableMap.get(tableName)));
> {code}
> ==>
> {code}
> RSGroupInfo src = new RSGroupInfo(newGroupMap.get(tableMap.get(tableName)));
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message