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

Kashif J S commented on HBASE-10933:
------------------------------------

Thanks [~jmhsieh] :)  Alright I will modify as per your comments/concerns.  
Maybe I will rename the nextkey method  to something as "nextByte". Maybe more 
meaningful for the value it returns. And other methods I will hide by making 
private. 
//What do you mean by exclusive? – in the [a, b), [b, c) sense where b is in 
the second but not the first? If we did next we'd still be able to sneak 
'abc\x0' betwen 'abc' and 'abd'

Yes... if region startkey and endkey is 'abc' and 'abd', If we did next we will 
be able to sneak 'abc\x0'. So nextKey maybe a wrong method name. I will rename 
method to nextByte
Also I will add Unit test cases for the same.

> hbck -fixHdfsOrphans is not working properly it throws null pointer exception
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-10933
>                 URL: https://issues.apache.org/jira/browse/HBASE-10933
>             Project: HBase
>          Issue Type: Bug
>          Components: hbck
>    Affects Versions: 0.94.16, 0.98.2
>            Reporter: Deepak Sharma
>            Assignee: Kashif J S
>            Priority: Critical
>             Fix For: 0.99.0, 0.94.22
>
>         Attachments: HBASE-10933-0.94-v1.patch, HBASE-10933-0.94-v2.patch, 
> HBASE-10933-trunk-v1.patch, HBASE-10933-trunk-v2.patch, TestResults-0.94.txt, 
> TestResults-trunk.txt
>
>
> if we regioninfo file is not existing in hbase region then if we run hbck 
> repair or hbck -fixHdfsOrphans
> then it is not able to resolve this problem it throws null pointer exception
> {code}
> 2014-04-08 20:11:49,750 INFO  [main] util.HBaseFsck 
> (HBaseFsck.java:adoptHdfsOrphans(470)) - Attempting to handle orphan hdfs 
> dir: 
> hdfs://10.18.40.28:54310/hbase/TestHdfsOrphans1/5a3de9ca65e587cb05c9384a3981c950
> java.lang.NullPointerException
>       at 
> org.apache.hadoop.hbase.util.HBaseFsck$TableInfo.access$000(HBaseFsck.java:1939)
>       at 
> org.apache.hadoop.hbase.util.HBaseFsck.adoptHdfsOrphan(HBaseFsck.java:497)
>       at 
> org.apache.hadoop.hbase.util.HBaseFsck.adoptHdfsOrphans(HBaseFsck.java:471)
>       at 
> org.apache.hadoop.hbase.util.HBaseFsck.restoreHdfsIntegrity(HBaseFsck.java:591)
>       at 
> org.apache.hadoop.hbase.util.HBaseFsck.offlineHdfsIntegrityRepair(HBaseFsck.java:369)
>       at org.apache.hadoop.hbase.util.HBaseFsck.onlineHbck(HBaseFsck.java:447)
>       at org.apache.hadoop.hbase.util.HBaseFsck.exec(HBaseFsck.java:3769)
>       at org.apache.hadoop.hbase.util.HBaseFsck.run(HBaseFsck.java:3587)
>       at 
> com.huawei.isap.test.smartump.hadoop.hbase.HbaseHbckRepair.repairToFixHdfsOrphans(HbaseHbckRepair.java:244)
>       at 
> com.huawei.isap.test.smartump.hadoop.hbase.HbaseHbckRepair.setUp(HbaseHbckRepair.java:84)
>       at junit.framework.TestCase.runBare(TestCase.java:132)
>       at junit.framework.TestResult$1.protect(TestResult.java:110)
>       at junit.framework.TestResult.runProtected(TestResult.java:128)
>       at junit.framework.TestResult.run(TestResult.java:113)
>       at junit.framework.TestCase.run(TestCase.java:124)
>       at junit.framework.TestSuite.runTest(TestSuite.java:243)
>       at junit.framework.TestSuite.run(TestSuite.java:238)
>       at 
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> {code}
> problem i got it is because since in HbaseFsck class 
> {code}
>  private void adoptHdfsOrphan(HbckInfo hi)
> {code}
> we are intializing tableinfo using SortedMap<String, TableInfo> tablesInfo 
> object
> {code}
> TableInfo tableInfo = tablesInfo.get(tableName);
> {code}
> but  in private SortedMap<String, TableInfo> loadHdfsRegionInfos()
> {code}
>  for (HbckInfo hbi: hbckInfos) {
>       if (hbi.getHdfsHRI() == null) {
>         // was an orphan
>         continue;
>       }
> {code}
> we have check if a region is orphan then that table will can not be added in 
> SortedMap<String, TableInfo> tablesInfo
> so later while using this we get null pointer exception



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to