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

Chris Trezzo resolved HBASE-5071.
---------------------------------

       Resolution: Fixed
    Fix Version/s: 0.96.0
     Release Note: This issue only effects HFileV1 and is not an issue for 
HFileV2.
    
> HFile has a possible cast issue.
> --------------------------------
>
>                 Key: HBASE-5071
>                 URL: https://issues.apache.org/jira/browse/HBASE-5071
>             Project: HBase
>          Issue Type: Bug
>          Components: HFile, io
>    Affects Versions: 0.90.0
>            Reporter: Harsh J
>              Labels: hfile
>             Fix For: 0.96.0
>
>
> HBASE-3040 introduced this line originally in HFile.Reader#loadFileInfo(...):
> {code}
> int allIndexSize = (int)(this.fileSize - this.trailer.dataIndexOffset - 
> FixedFileTrailer.trailerSize());
> {code}
> Which on trunk today, for HFile v1 is:
> {code}
> int sizeToLoadOnOpen = (int) (fileSize - trailer.getLoadOnOpenDataOffset() -
>         trailer.getTrailerSize());
> {code}
> This computed (and casted) integer is then used to build an array of the same 
> size. But if fileSize is very large (>> Integer.MAX_VALUE), then there's an 
> easy chance this can go negative at some point and spew out exceptions such 
> as:
> {code}
> java.lang.NegativeArraySizeException 
> at org.apache.hadoop.hbase.io.hfile.HFile$Reader.readAllIndex(HFile.java:805) 
> at org.apache.hadoop.hbase.io.hfile.HFile$Reader.loadFileInfo(HFile.java:832) 
> at 
> org.apache.hadoop.hbase.regionserver.StoreFile$Reader.loadFileInfo(StoreFile.java:1003)
>  
> at org.apache.hadoop.hbase.regionserver.StoreFile.open(StoreFile.java:382) 
> at 
> org.apache.hadoop.hbase.regionserver.StoreFile.createReader(StoreFile.java:438)
>  
> at org.apache.hadoop.hbase.regionserver.Store.loadStoreFiles(Store.java:267) 
> at org.apache.hadoop.hbase.regionserver.Store.<init>(Store.java:209) 
> at 
> org.apache.hadoop.hbase.regionserver.HRegion.instantiateHStore(HRegion.java:2088)
>  
> at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:358) 
> at 
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2661) 
> at 
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2647) 
> {code}
> Did we accidentally limit single region sizes this way?
> (Unsure about HFile v2's structure so far, so do not know if v2 has the same 
> issue.)

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

Reply via email to