Description
In IFile.Reader.close(), we return the decompressor to the pool and then call close() on the input stream. This is backwards and causes a rare race in the case of LzopCodec, since LzopInputStream makes a few calls on the decompressor object inside close(). If another thread pulls the decompressor out of the pool and starts to use it in the meantime, the first thread's close() will cause the second thread to potentially miss pieces of data.
Attachments
Attachments
Issue Links
- is related to
-
HADOOP-4162 CodecPool.getDecompressor(LzopCodec) always creates a brand-new decompressor.
- Resolved
-
HADOOP-4195 SequenceFile.Writer close() uses compressor after returning it to CodecPool.
- Closed