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

Ted Yu updated HBASE-4942:
--------------------------

      Resolution: Fixed
    Hadoop Flags: Reviewed
          Status: Resolved  (was: Patch Available)
    
> HMaster is unable to start of HFile V1 is used
> ----------------------------------------------
>
>                 Key: HBASE-4942
>                 URL: https://issues.apache.org/jira/browse/HBASE-4942
>             Project: HBase
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 0.92.0
>            Reporter: Ted Yu
>            Assignee: honghua zhu
>             Fix For: 0.92.0, 0.94.0
>
>         Attachments: HBase_0.92.0_HBASE-4942, HBase_0.94.0_HBASE-4942
>
>
> This was reported by HH Zhu (zhh200...@gmail.com)
> If the following is specified in hbase-site.xml:
> {code}
>     <property>
>         <name>hfile.format.version</name>
>         <value>1</value>
>     </property>
> {code}
> Clear the hdfs directory "hbase.rootdir" so that MasterFileSystem.bootstrap() 
> is executed.
> You would see:
> {code}
> java.lang.NullPointerException
>     at 
> org.apache.hadoop.hbase.io.hfile.HFileReaderV1.close(HFileReaderV1.java:358)
>     at 
> org.apache.hadoop.hbase.regionserver.StoreFile$Reader.close(StoreFile.java:1083)
>     at 
> org.apache.hadoop.hbase.regionserver.StoreFile.closeReader(StoreFile.java:570)
>     at org.apache.hadoop.hbase.regionserver.Store.close(Store.java:441)
>     at org.apache.hadoop.hbase.regionserver.HRegion.doClose(HRegion.java:782)
>     at org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:717)
>     at org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:688)
>     at 
> org.apache.hadoop.hbase.master.MasterFileSystem.bootstrap(MasterFileSystem.java:390)
>     at 
> org.apache.hadoop.hbase.master.MasterFileSystem.checkRootDir(MasterFileSystem.java:356)
>     at 
> org.apache.hadoop.hbase.master.MasterFileSystem.createInitialFileSystemLayout(MasterFileSystem.java:128)
>     at 
> org.apache.hadoop.hbase.master.MasterFileSystem.<init>(MasterFileSystem.java:113)
>     at 
> org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:435)
>     at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:314)
>     at java.lang.Thread.run(Thread.java:619)
> {code}
> The above exception would lead to:
> {code}
> java.lang.RuntimeException: HMaster Aborted
>     at 
> org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:152)
>     at 
> org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:103)
>     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
>     at 
> org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
>     at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:1512)
> {code}
> In org.apache.hadoop.hbase.master.HMaster.HMaster(Configuration conf), we 
> have:
> {code}
> this.conf.setFloat(CacheConfig.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);
> {code}
> When CacheConfig is instantiated, the following is called:
> {code}
> org.apache.hadoop.hbase.io.hfile.CacheConfig.instantiateBlockCache(Configuration
>  conf)
> {code}
> Since "hfile.block.cache.size" is 0.0, instantiateBlockCache() would return 
> null, resulting in blockCache field of CacheConfig to be null.
> When master closes Root region, 
> org.apache.hadoop.hbase.io.hfile.HFileReaderV1.close(boolean evictOnClose) 
> would be called. cacheConf.getBlockCache() returns null, leading to master 
> abort.
> The following should be called in HFileReaderV1.close(), similar to the code 
> in HFileReaderV2.close():
> {code}
> if (evictOnClose && cacheConf.isBlockCacheEnabled())
> {code}

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