[ 
https://issues.apache.org/jira/browse/HBASE-5929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13270943#comment-13270943
 ] 

Jean-Daniel Cryans commented on HBASE-5929:
-------------------------------------------

The reason it doesn't work with META is because we don't write the full meta 
row names in ROOT. The row key should be ".META.,,1.1028785192" but if I scan 
ROOT I see:

{quote}
 .META.,,1                                                       
column=info:regioninfo, timestamp=1336512980545, value=....                     
                                   
 .META.,,1                                                       
column=info:server, timestamp=1336512994161, 
value=h-25-183.sfo.stumble.net:50063                                            
                                                              
 .META.,,1                                                       
column=info:serverstartcode, timestamp=1336512994161, value=1336512979497       
                                                                                
                           
 .META.,,1                                                       column=info:v, 
timestamp=1336512980545, value=\x00\x00    
{quote}

It's missing the encoded name. That won't work. Requesting the compaction of a 
root region won't work either because the code that figures out if a region or 
a table is passed depends on MetaReader.getCatalogHTable which doesn't take 
ROOT regions (which is normal since the ROOT address isn't contained in an 
HTable but in ZK).

For the other regions that had that issue, it was a bad interaction in our code 
where the scan of .META. is done possible hours before the call for compaction 
is issued. I was able to confirm that all the regions that were affected had 
been recently split.

The issues that remain:

 - It's impossible to compact the root region directly, but calling compact on 
the table itself works.
 - It's possible to compact the meta region directly but the user needs to pass 
".META.,,1" instead of the full region name.
 - Trying to compact a region that doesn't exist throws a 
TableNotFoundException, which confuses the user.

I'd say that this is minor but we should probably fix for usability.
                
> HBaseAdmin.majorCompact and hbase shell randomly throw exceptions when asked 
> to majorcompact regions.
> -----------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-5929
>                 URL: https://issues.apache.org/jira/browse/HBASE-5929
>             Project: HBase
>          Issue Type: Bug
>          Components: client, shell
>    Affects Versions: 0.92.1
>         Environment: Linux Ubuntu Lucid 64bit
>            Reporter: Aravind Gottipati
>            Priority: Minor
>
> I have been noticing that calls to HBaseAdmin.majorCompact throws exceptions 
> randomly for some regions.  I could not find a pattern to these exception.  
> The code I have simply does this 
> admin.majorCompact(region.getRegionNameAsString()).  admin is an instance of 
> HBaseAdmin and region is an instance of HRegionInfo.  The exception I get is 
> org.apache.hadoop.hbase.TableNotFoundException: -ROOT-,,0
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.tableNameString(HBaseAdmin.java:1473)
>  ~[hbase-0.92.1.jar:0.92.1]
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.compact(HBaseAdmin.java:1235) 
> ~[hbase-0.92.1.jar:0.92.1]
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.majorCompact(HBaseAdmin.java:1209) 
> ~[hbase-0.92.1.jar:0.92.1]
>         at com.stumbleupon.hbaseadmin.HBaseCompact.compactAllServers(Unknown 
> Source) [hbase_compact.jar:na]
> In this case it's the root region, but I get similar exceptions for other 
> tables, like this.
> 2012-05-03 19:03:42,994 WARN  [main] HBaseCompact: Could not compact:
> org.apache.hadoop.hbase.TableNotFoundException: 
> ad_daily,49842:2009-07-10,1269763588508.1997607018
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.tableNameString(HBaseAdmin.java:1473)
>  ~[hbase-0.92.1.jar:0.92.1]
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.compact(HBaseAdmin.java:1235) 
> ~[hbase-0.92.1.jar:0.92.1]
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.majorCompact(HBaseAdmin.java:1209) 
> ~[hbase-0.92.1.jar:0.92.1]
>         at 
> org.apache.hadoop.hbase.client.HBaseAdmin.majorCompact(HBaseAdmin.java:1196) 
> ~[hbase-0.92.1.jar:0.92.1]
>         at com.stumbleupon.hbaseadmin.HBaseCompact.compactAllServers(Unknown 
> Source) [hbase_compact.jar:na]
>         at com.stumbleupon.hbaseadmin.HBaseCompact.main(Unknown Source) 
> [hbase_compact.jar:na]
> I see this on hbase shell as well.  However, I don't see these exceptions if 
> I use admin.majorCompact(region.getRegionName()), so it looks like something 
> gets lost when I use getRegionNameAsString().
> Let me know if I can provide more information.

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

        

Reply via email to