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

Lars Hofhansl commented on HBASE-11042:
---------------------------------------

This is in HFileWriterV1. [~stack], looks like a comment you would write :)
{code}
  private DataOutputStream getCompressingStream() throws IOException {
    this.compressor = compressAlgo.getCompressor();
    // Get new DOS compression stream. In tfile, the DOS, is not closed,
    // just finished, and that seems to be fine over there. TODO: Check
    // no memory retention of the DOS. Should I disable the 'flush' on the
    // DOS as the BCFile over in tfile does? It wants to make it so flushes
    // don't go through to the underlying compressed stream. Flush on the
    // compressed downstream should be only when done. I was going to but
    // looks like when we call flush in here, its legitimate flush that
    // should go through to the compressor.
    OutputStream os = this.compressAlgo.createCompressionStream(
        this.outputStream, this.compressor, 0);
    return new DataOutputStream(os);
  }
{code}


> TestForceCacheImportantBlocks OOMs occasionally in 0.94
> -------------------------------------------------------
>
>                 Key: HBASE-11042
>                 URL: https://issues.apache.org/jira/browse/HBASE-11042
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>             Fix For: 0.94.19
>
>         Attachments: 11042-0.94.txt
>
>
> This trace:
> {code}
> Caused by: java.lang.OutOfMemoryError
>       at java.util.zip.Deflater.init(Native Method)
>       at java.util.zip.Deflater.<init>(Deflater.java:169)
>       at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:91)
>       at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:110)
>       at 
> org.apache.hadoop.hbase.io.hfile.ReusableStreamGzipCodec$ReusableGzipOutputStream$ResetableGZIPOutputStream.<init>(ReusableStreamGzipCodec.java:79)
>       at 
> org.apache.hadoop.hbase.io.hfile.ReusableStreamGzipCodec$ReusableGzipOutputStream.<init>(ReusableStreamGzipCodec.java:90)
>       at 
> org.apache.hadoop.hbase.io.hfile.ReusableStreamGzipCodec.createOutputStream(ReusableStreamGzipCodec.java:130)
>       at 
> org.apache.hadoop.io.compress.GzipCodec.createOutputStream(GzipCodec.java:101)
>       at 
> org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.createPlainCompressionStream(Compression.java:299)
>       at 
> org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.createCompressionStream(Compression.java:283)
>       at 
> org.apache.hadoop.hbase.io.hfile.HFileWriterV1.getCompressingStream(HFileWriterV1.java:207)
>       at 
> org.apache.hadoop.hbase.io.hfile.HFileWriterV1.close(HFileWriterV1.java:356)
>       at 
> org.apache.hadoop.hbase.regionserver.StoreFile$Writer.close(StoreFile.java:1330)
>       at 
> org.apache.hadoop.hbase.regionserver.Store.internalFlushCache(Store.java:913)
> {code}
> Note that is caused specifically by HFileWriteV1 when using compression. It 
> looks like the compression resources are not released.
> Not sure it's worth fixing this at this point. The test can be fixed by 
> either not using compression (why are we using compression anyway), or by not 
> testing for HFileV1.
> [~stack] it seems you know the the code in HFileWriterV1. Do you want to have 
> a look? Maybe there is a quick fix in HFileWriterV1.



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

Reply via email to